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