Jav*_*low 5 jvm functional-programming scala currying case-class
我写了以下内容:
case class SuperMessage(message: String)(capitalMessage: String = message.capitalize)
val message = "hello world"
val superMessage = SuperMessage(message)()
Run Code Online (Sandbox Code Playgroud)
但我做不到 superMessage.capitalMessage
这是怎么回事?
val默认情况下,案例类第二个参数列表中的参数不是。
尝试
case class SuperMessage(message: String)(val capitalMessage: String = message.capitalize)
Run Code Online (Sandbox Code Playgroud)
除了Dmytro的答案,我还应该指出,所有 case类功能仅关心第一个列表中的参数,因此例如
val message1 = SuperMessage("hello world")()
val message2 = SuperMessage("hello world")("surprise")
println(message1 == message2)
Run Code Online (Sandbox Code Playgroud)
将打印true。如果这不是您想要的,请定义一个单独的apply方法:
case class SuperMessage(message: String, capitalMessage: String)
object SuperMessage {
def apply(message: String) = SuperMessage(message, message.capitalize)
}
Run Code Online (Sandbox Code Playgroud)