我想在 Scala 中创建通用(不变)方法,它将元素从源列表复制到目标列表。在 Java 中有java.util.Collections 中的复制方法(参见http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#copy%28java.util.List, %20java.util.List%29 )。我知道 Scala List 是不可变对象,所以我想创建并返回新列表。
我编写了以下代码:
def copy[T](dest:List[T], src:List[T]):List[T] = {
if(dest.length<src.length) throw new Exception("IndexOutOfBoundsException")
else if(src==Nil) dest
else {
var ret = dest
ret = dest.updated(0, src.first)
var i=1
val f:(T=>Unit) = a => {
if(i<src.length) ret=ret.updated(i, src(i))
i+=1
()
}
dest.foreach(f)
ret
}
}
但我认为它可以写得更好。你能帮我写出更好的代码吗?提前致谢。
编辑:也许我表达不清楚我想做什么。我有两个列表 (scala.collection.immutable.List),例如src (length=x) 和dest (length=y>=x)。我想用src列表中的元素替换dest列表的前x 个元素。