我如何匹配多个参数?

时间:2011-03-22 14:36:21

标签: scala pattern-matching

我有一个功能:

def func(a: int, b: int, c: double): int

我想要匹配各种可能的场景

  1. 只要c为0,请返回b-a
  2. c>的任何地方9,返回0
  3. a=b返回0
  4. 的任何地方

    依此类推,在做一些更复杂的逻辑之前,如果没有满足上述要求。

    我是否必须先单独匹配c,还是可以匹配a,b,c,如_,_,0

2 个答案:

答案 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

更清楚。基本上是因为这里没有任何模式可供匹配。