Бесполезное сообщение об ошибке - известная ошибка в Scala 2.9.
Что следует сказать, это
found : (String, Int) => Boolean
required: ((String, Int)) => Boolean
т.е. Вы поставили Function2[String, Int, Boolean]
, когда filter
требуется Function1[(String, Int), Boolean]
.
Вы можете использовать сопоставление с образцом для сопоставления на кортежах, как показывает Ник, напрямую предоставлять функцию кортежа, как показывает Томаш, или вы можете превратить Function2
в Function1
, принимая кортеж, используя метод tupled
:
n.filter(((k: String, v: Int) => !m.contains(k)).tupled)
// or
n.filter(Function.tupled((k, v) => !m.contains(k)))
Но лучше всего использовать встроенный метод filterKeys
:
n.filterKeys(!m.contains(_))