Проблема с вашим кодом в том, что вы предоставляете методу forall
функцию, которая принимает 2 аргумента и возвращает Boolean
или, другими словами, (Int, Int) => Boolean
.Если вы посмотрите в документации, то найдете эту подпись:
def forall (p: ((A, B)) => Boolean): Boolean
, в этом случае forall
метод ожидает Tuple2[A, B] => Boolean
, поэтому его также можно записать так:
def forall (p: Tuple2[A, B] => Boolean): Boolean
Чтобы исправить пример, вы можете либо вызвать forall
и присвоить ему функцию, которая принимает 1 аргумент кортежа:
myMap.forall(keyVal => keyVal._1 * 10 == keyVal._2)
, либо вы сопоставляете шаблоны и извлекаете ключ и значение:
myMap.forall {case (k, v) => k * 10 == v}
В этом случае вы даете PartialFunction[(Int, Int), Boolean]
методу forall