Для частного случая 2-кортежа, вы можете использовать:
scala> val ls = Seq("a", "b", "b", "c")
ls: Seq[String] = List(a, b, b, c)
scala> (ls, ls.tail).zipped.map(_ == _)
res0: Seq[Boolean] = List(false, true, false)
Другие варианты
scala> (ls zip ls.tail).map{case (a,b) => a == b}
res2: Seq[Boolean] = List(false, true, false)
scala> (ls zip ls.tail).map{((_: String) == (_: String)).tupled}
res5: Seq[Boolean] = List(false, true, false)
scala> (ls zip ls.tail).map(((_ == _): ((String, String) => Boolean)).tupled)
res0: Seq[Boolean] = List(false, true, false)
но они не легче понять и проще писать. Механизм вывода типов Scalas недостаточно эффективен, чтобы вывести правильный тип в последнем случае, поэтому, если типы параметров не совпадают, вам часто приходится отступать, чтобы использовать сопоставление шаблонов.
Ваш код не компилируется на Скале 2.11.8: ' ') «ожидается, но». найденный. [error] val detectChange = (ls zip ls.tail) .map (strEq _. Tupled) '. –
Вам нужно удалить '.' после' strEq' для компиляции. –
Ближайшая вещь, которую я вижу (которая немного более подробно), которая встроена, это '(ls zip ls.tail) .map {case (x, y) => x == y}' –