我想让第二个构造函数参数可选,并在这种情况下使用第一个参数的值。有什么办法可以做到吗?此代码无法编译,因为它找不到 realUser
:
class CurrentUser(val realUser:String, val masqueradeUser:String = realUser)
我确信我可以通过编写自己的构造函数来解决它,但我想知道是否有更简洁的方法。实际上,现在我已经尝试编写自己的构造函数,它还不错:
class CurrentUser(val realUser:String, val masqueradeUser:String) {
def this(realUser:String) = this(realUser, realUser)
}
如果有人能想出更短的东西那就太好了,否则我会发布我自己的答案。
最佳答案
我相信您使用辅助构造函数的解决方案是更好的解决方案。参数在其自己的参数列表中不可见,仅在以下参数列表中可见。所以你必须做
class CurrentUser(val realUser: String)(val masqueradeUser: String = realUser)
然后调用
new CurrentUser(real)()
不太好。
关于具有默认 arg 引用另一个 arg 的 Scala 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7834431/