Scala - сопоставление шаблонов с условными операторами? Можно ли сделать что-то вроде: def foo(x: Int): Boolean = { case x > 1 => true case x < 1 => false } Ответ 1 def foo(x: Int): Boolean = x match { case _ if x > 1 => true case _ if x < 1 => false } Обратите внимание, что у вас нет случая для x == 1, хотя... Ответ 2 Я бы написал что-то вроде этого: def foo(x: Int) = if (x > 1) true else if (x < 1) false else throw new IllegalArgumentException("Got " + x) Ответ 3 Так как в вашем примере отсутствует случай x == 1, я предполагаю, что он обрабатывается так же, как x < 1. Вы можете сделать это следующим образом: def foo(x:Int):Boolean = (x - 1).signum match { case 1 => true case _ => false } Но тогда это, конечно, может быть упрощено: def foo(x:Int) = (x - 1).signum == 1
Ответ 1 def foo(x: Int): Boolean = x match { case _ if x > 1 => true case _ if x < 1 => false } Обратите внимание, что у вас нет случая для x == 1, хотя...
Ответ 2 Я бы написал что-то вроде этого: def foo(x: Int) = if (x > 1) true else if (x < 1) false else throw new IllegalArgumentException("Got " + x)
Ответ 3 Так как в вашем примере отсутствует случай x == 1, я предполагаю, что он обрабатывается так же, как x < 1. Вы можете сделать это следующим образом: def foo(x:Int):Boolean = (x - 1).signum match { case 1 => true case _ => false } Но тогда это, конечно, может быть упрощено: def foo(x:Int) = (x - 1).signum == 1