在 Scala 中追加时列表类型不匹配

Bor*_*d81 1 scala scala-collections

假设我有以下代码:

val xs: List[Int] = List(1, 2, 3)
val ys: List[Int] = List(4, 5, 6)
val zs: List[Int] = xs.appended(ys)
Run Code Online (Sandbox Code Playgroud)

最后一行没有编译错误:

错误:(162, 33) 类型不匹配;发现:List[Int] 需要:Int val zs:List[Int] = xs.appended(ys)

如果我删除显式类型声明,则代码会编译,但真正的问题是错误消息出现在递归函数中,我想将附加列表作为 type 的参数传递List[Int],因此删除显式类型不是一个选项.

And*_*cus 5

根据scaladoc appended方法只需要一个参数,而不是整个列表。所以下面的例子将编译:

xs.appended(ys(0))
for(x <- xs) yield ys appended x
Run Code Online (Sandbox Code Playgroud)

appendAll

xs appendAll ys
ys :++ xs
Run Code Online (Sandbox Code Playgroud)

PS:注意,附加到列表不是最佳的,因为它的时间与列表的大小成正比,更喜欢 prepend 代替:

ys ::: xs
Run Code Online (Sandbox Code Playgroud)