Как создать частичную функцию из значения времени выполнения в Scala - PullRequest
3 голосов
/ 20 марта 2020

Я пытаюсь создать частичную функцию из значения времени выполнения и объединить частичные функции следующим образом:

class Test(val function: PartialFunction[Int, Boolean]) {
  def add(v: Int): Test = {
    new Test(function.orElse{case v => true})
  }
  def contains(v: Int) = function.isDefinedAt(v)
}

val test: Test = new Test({case 1 => true})
val test2 = test.add(2)
println(test2.contains(1))
println(test2.contains(2))
println(test2.contains(3))

Этот код печатает

true
true
true

Но последняя строка должна быть ложный. Почему это так? Что я делаю не так?

1 Ответ

5 голосов
/ 20 марта 2020

{ case v => true } всегда совпадает. Вы хотите проверить значение v:

  new Test(function.orElse{case `v` => true})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...