以下のように、クラスからインスタンスを作成し、メンバー変数に代入しようとすると、エラーがでます。
dart
1class Paint { 2 final color; 3 final strokeCap; 4 final strokeWidth; 5Paint(this.color, this.strokeCap, this.strokeWidth); 6} 7 8main() { 9 var paint = Paint(2, 3, 4); 10 paint.color = 5; 11 paint.strokeCap = 6; 12 paint.strokeWidth = 7; 13 print(paint.color); 14 15}
Error: The setter 'color' isn't defined for the class 'Paint'. - 'Paint' is from 'package:dartpad_sample/main.dart' ('lib/main.dart'). paint.color = 5;
finalを省略しintにするか、varにするとエラーがなくなりsetterが機能します。
なぜでしょうか?
静的型付けかつオブジェクト指向の言語に一般的な話なのかもしれませんが、フィールド(メンバー変数)は定数(final,const)ではなく変更可能な変数(var)でなくてはならないのでしょうか?
あなたの回答
tips
プレビュー