我有一个功能:
def func(a: int, b: int, c: double): int
我想要匹配各种可能的场景
c
为0,请返回b-a
c
>的任何地方9,返回0 a=b
返回0 依此类推,在做一些更复杂的逻辑之前,如果没有满足上述要求。
我是否必须先单独匹配c,还是可以匹配a,b,c,如_,_,0
?
答案 0 :(得分:63)
您可以模式匹配所有描述的案例:
def func(a: Int, b: Int, c: Double) = (a, b, c) match {
case (a, b, 0) => b - a
case (a, b, c) if c > 9 || a == b => 0
case _ => 1 // add your logic here
}
答案 1 :(得分:3)
继我对Easy Angel的回答后,我仍然觉得这个
if (c == 0)
b -a
else if (c > 9)
0
else if (a == b)
0
else
1 // your logic here
更清楚。基本上是因为这里没有任何模式可供匹配。