Metoda przyjmująca niejawne CanBuildFrom nie działa z rozszerzeniem eta?
Mam następującą metodę:
def firstAndLast[CC, A, That](seq: CC)(implicit asSeq: CC => Seq[A], cbf: CanBuildFrom[CC, A, That]): That = {
val b = cbf(seq)
b += seq.head
b += seq.last
b.result
}
Widzieć:Metoda pobierająca Seq [T], aby zwrócić String zamiast Seq [Char] dla uzasadnienia. W pierwszym przypadku działa jak urok, ale nie kompiluje się w drugim:
List("abc", "def") map {firstAndLast(_)}
List("abc", "def") map firstAndLast
Dający:
error: No implicit view available from CC => Seq[A].
List("abc", "def") map firstAndLast
Masz pomysł, jak ulepszyć tę deklarację, aby uniknąć dodatkowego pakowania? Wydaje się, że eta-expand jest problemem (?)