ご存知のように、Kotlin では、さまざまなタイプの変更可能なリストの変更可能なリストを作成できます。たとえば、次のようになります。
val list = mutableListOf(
MutableList<Int>(3) { 0 },
MutableList<String>(2) { "aaa" }
)
また、(予想どおり) メイン リストを変更することもできます。たとえば、次のようになります。
list.add(MutableList<Double>(4) { 0.0 }
この操作の後、 の結果println(list)
は次のようになります。
[[0, 0, 0], [aaa, aaa], [0.0, 0.0, 0.0, 0.0]]
ただし
、操作などのサブリストを変更することは不可能です。
list[0][1] = 2
list[1].add("bbb")
エラーメッセージを生成します:
整数リテラルは、予期される型に準拠していません Nothing
および
Type mismatch: inferred type is String but Nothing was expected
それぞれ...
私の質問は:
これらのネストされたサブリスト (可変として宣言されている) が、不変のように動作するのはなぜですか?
これらのネストされたサブリストを変更する方法はありますか???
ところで...
ネストされたサブリストが変更可能であると宣言され、それらがすべて同じ型である場合、非常に正常に動作することをすでに確認しました。
その場合、予想どおり、ネストされたサブリストを変更することができます...