Scala 额外的无参数构造函数加上默认构造函数参数

2024-03-13

我在构造函数上使用 Scala 2.8 默认参数,并且出于 Java 兼容性原因,我想要一个使用默认参数的无参数构造函数。

由于非常合理的原因,这不起作用:

class MyClass(field1: String = "foo", field2: String = "bar") {
    def this() = {
        this() // <-- Does not compile, but how do I not duplicate the defaults?
    }
}

我想知道我是否缺少任何东西。有不需要复制参数默认值的想法吗?

Thanks!


我真的不推荐它,但你可以通过向构造函数添加另一个参数来实现:

class MyClass(a: String = "foo", b: String = "bar", u: Unit = ()) {
  def this() { this(u = ()) }
}

Unit是一个不错的选择,因为无论如何您只能将一个东西传递给它,因此显式传递默认值不允许出现任何错误的可能性,但它可以让您调用正确的构造函数。

如果你愿意复制one对于默认值,您可以使用相同的策略,除了覆盖所选的默认值而不是添加单位参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scala 额外的无参数构造函数加上默认构造函数参数 的相关文章

随机推荐