Scalaで2D配列のディープコピーを作成するにはどうすればよいですか?Scalaの2D配列のディープコピー?
val a = Array[Array[Int]](2,3)
a(1,0) = 12
例えば
私はヴァルbは同じ配列を指し示すことなく、しかし、の値をコピーします。
Scalaで2D配列のディープコピーを作成するにはどうすればよいですか?Scalaの2D配列のディープコピー?
val a = Array[Array[Int]](2,3)
a(1,0) = 12
例えば
私はヴァルbは同じ配列を指し示すことなく、しかし、の値をコピーします。
は考える:
val a = Array[Array[Int]]
あなたが試みることができる:
for(inner <- a) yield {
for (elem <- inner) yield {
elem
}
}
深い質問はあなたがint型とそうでくださいしたいと思う理由ですか?不変型の使用のポイントは、まさにこのような構造を避けることです。
より一般的なArray[Array[T]]
をお持ちの場合は、アレイのクローンを作成する方法ではなく、T
のインスタンスをクローンする方法が最も重要です。
Scalaの配列はJava配列なので変更可能です。 –
Array
クラスのclone
メソッドを使用できます。多次元のArray
の場合は、余分な次元にmap
を使用してください。あなたたとえば、
val b = a.map(_.clone)
は2回だけ
a.transpose.transpose
恐ろしいヘビー級ですが、クールです:) –
これはあなたの例では、有効なコードではありません、それを転置得ます。再フォーマットできますか? –
同様のトピックについての議論は、 –