我有一个通用方法,它应该返回与输入相同类型的集合:
def removeN[A, C <: Seq[A]](s: C, n: Int): C = {
s.take(n) ++ s.drop(n + 1) // Sample operation
}
但是这段代码无法编译:
错误:(34, 15) 类型不匹配;找到:需要 Seq[A]:C s.take(n) ++ s.drop(n + 1)
C
当明确代表时,这怎么可能Seq[A]
?这是否意味着这种连接总是返回父类型的实例Seq[A]
,而不是子类型C
?可以重写我的代码以生成类型的集合C
吗?- 这是定义返回相同集合类型(在我的情况下是 的子类型
Seq
)作为一般输入的通用方法的正确方法吗?
斯卡拉 2.12.4