如何在方法的参数中分解case类?
scala> case class f(a:Int,b:Int) defined class f scala> def z((a,b):f) = a + b <console>:1: error: identifier expected but '(' found. def z((a,b):f) = a + b ^
这是唯一能得到我想要的吗?
def z(r:f) = r match {case f(a,b)=>a+b}
还是有更惯用的方式?
如果您的case类如此简单,那么您可以使用@XavierGuihot在注释中建议的内容。否则,您需要模式匹配。然而,有两种方法可以使用它:要么像您所做的那样,使用 match 关键字,或使用分部函数语法:
match
val z: f => Int = { case f(a, b) => a + b }