具有默认 arg 引用另一个 arg 的 Scala 构造函数

标签 scala constructor

我想让第二个构造函数参数可选,并在这种情况下使用第一个参数的值。有什么办法可以做到吗?此代码无法编译,因为它找不到 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/

相关文章:

python - 在python中复制构造函数?

c++ - 为什么存储在 map 中时需要默认构造函数?

java - 为什么要在 boolean 类和类似的不可变类上使用公共(public)构造函数?

class - Salesforce - 构造函数名称无效错误

scala - 为所有可映射类型定义提升

scala - scala 的 for-comprehensions 什么时候懒惰?

scala - Akka - 您应该创建多少个 Actor 实例?

c++ - vector<T> 调用的构造函数的奇怪问题

java - 对象 TemplatesPlugin 不是包 securesocial.controllers 的成员

scala - 问题让 SBT 在 Mac OS X 上工作