次の方法があります。
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
}
参照: Seq[Char] ではなく Seq[T] を使用して String を返すメソッドを参照してください。最初のケースでは魅力的に機能しますが、2 番目のケースではコンパイルに失敗します。
List("abc", "def") map {firstAndLast(_)}
List("abc", "def") map firstAndLast
与える:
error: No implicit view available from CC => Seq[A].
List("abc", "def") map firstAndLast
余分なラッピングを避けるためにこの宣言を改善する方法はありますか? eta-expansion が問題のようです (?)