Подтвердить что ты не робот

Как сопоставить несколько аргументов?

У меня есть функция:

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

И я хочу сопоставить различные возможные сценарии

  • Где c равно 0, верните b-a
  • Где c > 9, верните 0
  • Где a=b возвращает 0

И так далее, прежде чем делать более сложную логику, если ни одно из вышеперечисленных не выполняется.

Нужно ли сначала сопоставлять c отдельно, или я могу сопоставлять по a, b, c, например, _,_,0?

4b9b3361

Ответ 1

Вы можете сопоставить все описанные случаи следующим образом:

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
}

Ответ 2

Следуя моим комментариям к запросу Easy Angel, я все еще чувствую это

if (c == 0)
   b -a
else if (c > 9)
   0
else if (a == b)
   0
else 
   1 // your logic here

понятнее. В основном потому, что на самом деле нет никакого шаблона.