DartでのconstなListの要素の変更
Dart(2)の学習を始めたばかりのものです。
DartでのListの扱いについての質問です。
Dart
1var listA = [1, 2, 3]; 2listA[1] = 10; // 要素変更可(varなのでインスタンス自体を入れ替えることもできる) 3 4final listB = [1, 2, 3]; 5listB[1] = 10; // 要素変更可(finalな変数に代入されたListインスタンスの要素変更) 6 7const listC = [1, 2, 3]; 8listC[1] = 10; // 要素変更可(constな変数に代入されたListインスタンスの要素変更) 9 10final listD = const [1, 2, 3]; 11listD[1] = 10; // <- なぜ要素が変更できるのかわかりません
constの意味を理解していないのが原因かとは思いますが
自分は、listDに格納されているListインスタンスはconstであり、
コンパイル時定数であるため、このインスタンスの要素は変更できないと考えています。
この'listD'がなぜ要素変更可なのかを解説していただけないでしょうか。
いただいたご質問で全て理解できました...。
結論からになりますが、listCとlistDは要素の変更はできませんでした。
自分は勝手に、静的にエラーするものだと思い込んでしまっていたのですが
dartではimmutable(unmodifiable)なListの要素の変更などは実行時エラーになるのですね。
申し訳ありません。
おかげさまで解決いたしました。
本当にありがとうございます!
静的にチェックしてくれても良いように感じるのですが
何か言語仕様上の制約などによるものなのでしょうか。
調査して追記します。
回答1件
あなたの回答
tips
プレビュー