考虑此代码:
def myMap[T, S](seq: S)(implicit ev: S <:< Seq[T]): S =
seq.map { x => x }
编译器抱怨:
error: type mismatch;
found : Seq[T]
required: S
显然seq.map { x => x }
会返回Seq[T]
,而不是S
。
但是S
是Seq[T]
的子类,而map
应该能够为另一个S
构建S
。
如何编写接收任何Seq
并返回原始类型的此类函数,而不仅仅是Seq
?