我怎样才能拥有 case class 构造函数?
How can I have curried case class constructors?
我写了以下内容:
case class SuperMessage(message: String)(capitalMessage: String = message.capitalize)
val message = "hello world"
val superMessage = SuperMessage(message)()
但是我做不到superMessage.capitalMessage
怎么回事?
案例 class 的第二个参数列表中的参数默认不是 val
。
尝试
case class SuperMessage(message: String)(val capitalMessage: String = message.capitalize)
除了 Dmytro 的回答,我应该指出 all case class 功能只关心第一个列表中的参数,例如
val message1 = SuperMessage("hello world")()
val message2 = SuperMessage("hello world")("surprise")
println(message1 == message2)
将打印 true
。如果这不是您想要的,请改为定义一个单独的 apply
方法:
case class SuperMessage(message: String, capitalMessage: String)
object SuperMessage {
def apply(message: String) = SuperMessage(message, message.capitalize)
}
我写了以下内容:
case class SuperMessage(message: String)(capitalMessage: String = message.capitalize)
val message = "hello world"
val superMessage = SuperMessage(message)()
但是我做不到superMessage.capitalMessage
怎么回事?
案例 class 的第二个参数列表中的参数默认不是 val
。
尝试
case class SuperMessage(message: String)(val capitalMessage: String = message.capitalize)
除了 Dmytro 的回答,我应该指出 all case class 功能只关心第一个列表中的参数,例如
val message1 = SuperMessage("hello world")()
val message2 = SuperMessage("hello world")("surprise")
println(message1 == message2)
将打印 true
。如果这不是您想要的,请改为定义一个单独的 apply
方法:
case class SuperMessage(message: String, capitalMessage: String)
object SuperMessage {
def apply(message: String) = SuperMessage(message, message.capitalize)
}