【发布时间】:2021-09-05 08:14:15
【问题描述】:
我正在尝试创建一个可以采用immutable.Seq 的任何后代的类型参数的方法。这是我到目前为止得到的:
def writeSomeData[Holder[_] <: Seq[String]](path: String, holder: Holder[String]): Unit = {
// irrelevant implementation
}
但是,当我使用immutable.List 调用上述方法时:
writeSomeData(tmp, List(res1, res2, res3, res4, res5))
它因以下错误而中断:
[error] /home/v.gorcinschi/repos/...: inferred type arguments [List] do not conform to method writeSomeData's type parameter bounds [Holder[_] <: Seq[String]]
[error] writeSomeData(tmp, List(res1, res2, res3, res4, res5))
[error] ^
[error] /home/v.gorcinschi/repos/...: type mismatch;
[error] found : List[String]
[error] required: Holder[String]
[error] writeSomeData(tmp, List(res1, res2, res3, res4, res5))
【问题讨论】:
-
确实你是对的!你想发表你的评论作为答案吗?
-
您将
Holder声明为高阶类型,但设置了非高阶类型的界限,因此它永远不会匹配。 Luis 的解决方案是正确的
标签: scala types liskov-substitution-principle