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],因此删除显式类型不是一个选项.
根据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)