функция переключения и объект с помощью scalaz '|>

Я могу использовать оператор 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.
13
задан coubeatczech 15 January 2011 в 13:16
поделиться