🙆♀️
Dart で var を極力避ける実装
var を利用する問題点
スコープ内であれば、値の代入が可能になってしまう。
var text = '';
switch (currentPage) {
case 0:
text = 'home';
break;
case 1:
text = 'myPage'
break;
}
print(text);
解決法
-
関数の定義
関数でスコープを絞ることで、再代入しづらくなる。
String getText() { var text = ''; switch (currentPage) { case 0: text = 'home'; break; case 1: text = 'myPage' break; } return text; } print(getText());
-
即時関数
関数にする必要がなくなる。
final text = (() { var value = ''; switch (currentPage) { case 0: value = 'home'; break; case 1: value = 'myPage' break; } return value; })(); print(text);
-
final の分岐
ネストを増やさないので、スッキリ書ける。
late final
では無いので、nullable であろうと代入忘れがあると Syntax エラーが出るので、例外処理も明示的に書ける。final String text; switch (currentPage) { case 0: text = 'home'; break; case 1: text = 'myPage' break; default: text = ''; } print(text);
Discussion