Я могу использовать оператор scalaz
|>
, когда я хочу переключать функцию и объект, чтобы можно было получить немного больше читаемости. Позвольте мне представить вам модельную функцию:
def length2(x:String) = x.length * 2
Теперь я могу записать ее в обоих направлениях: "aoeu" |> length2
length2("aoeu")
Но если я определю эту функцию более общей, она перестанет работать. def length2(x:SeqLike[_
,_
]) = x.length * 2
length2("aoeu") // ok
"aoeu" |> length2 // doesn't work
Почему компилятор этого не понимает? Существует определенно неявное преобразование из String
в некоторый смешение класса в признаке SeqLike
.