Я новичок в Scala и пытаюсь декодировать его конструкции, я узнал о сопоставлении с шаблоном , и его синтаксис похож на оператор переключения Java
val x: Int = Random.nextInt(10)
x match {
case 0 => "zero"
case 1 => "one"
case 2 => "two"
case _ => "other"
}
Этот код здесьдовольно очевидно и читабельно. Я сталкивался с частичными функциями , которые достаточно очевидны и понятны.
Частичная функция - это функция, которая не дает ответа на все возможные входные значения, которые она может дать.
Что меня смущает, так это использование case
в теле частичной функции, подобной этой:
val divide2: PartialFunction[Int, Int] = {
case d: Int if d != 0 => 42 / d // WHAT IS THIS ?!
}
Я не понимаю, как используется case
без оператора match
как это интерпретируется Scala, как он читается, это метод, класс или другая конструкция? Какие еще способы я могу использовать case
без match
оператора
* 1023? * Edit:
Я пытался поиграть с этим делом и до сих пор не получил его. Например
val SomeFun: PartialFunction[Int, Int] = {
case d: Int if d != 0 => 1000 / d
case f: Int if f != 2 => 100 / f
case m: Int if m != 1 => 10 / m
}
Как это работает?
Попытка этого дает ошибку
val SomeFun = {
case d: Int if d != 0 => 1000 / d
case f: Int if f != 2 => 100 / f
case m: Int if m != 1 => 10 / m
}
Error:(29, 17) missing parameter type for expanded function
The argument types of an anonymous function must be fully known. (SLS 8.5)
Expected type was: ?
Используется ли регистр без совпадения где-либо еще, кроме частичной функции?