ソース リストから宛先リストに要素をコピーする汎用 (不変) メソッドを Scala で作成したいと考えています。Java では、 java.util.Collectionsにcopyメソッドがあります ( 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
}
}
でも、もっと上手に書けると思います。より良いコードを書くのを手伝ってくれませんか? 前もって感謝します。
EDITED : たぶん、私が何をしたいのかがはっきりしていません。2 つのリスト (scala.collection.immutable.List) があります。たとえば、src (長さ = x) とdest (長さ = y>=x) です。destリストの最初のx要素をsrcリストの要素に置き換えたいと思います。