もくじ
問題
「late」を使う目的は何か?
- 変数を即座に初期化するため
- 後で値を決定するため
- null 値を許可するため
- インスタンスを作成するため
正解と解説動画
正解
2.後で値を決定するため
解説動画
この動画ではDartの「late」キーワードについて解説しています。これ、初心者の方にとっては「何のために使うの?」と疑問になるかもしれませんが、要するに「後から値を入れたいとき」に便利なんです。
「late」とは何か?
通常、Dartでは変数を宣言するときに値をすぐ入れる必要があります。これを「初期化」と言いますね。
でも、プログラムによっては「すぐには値を決められないけど、あとで必ず設定する」という場合も出てきます。
例えば、ユーザーが入力した情報を元に変数の値を設定するケースとかですね。
そんなときに「late」を使うと、「あとで値を入れるから今は初期化しないでね」と Dartに伝えられます。
late String greeting; void main() { greeting = 'Hello, Dart!'; print(greeting); // 出力: Hello, Dart! }
「late」使用上の注意点
ただし、lateを使うときには注意点もあります。lateをつけた変数は、使う直前には必ず値が入っていないとエラーになります。
例えば、計算や表示などでその変数を使おうとするとき、値が入っていないと「late initialization error」というエラーが出てプログラムが止まってしまいます。
だから「late」を使うときには、あとで確実に値を入れるようにコードをしっかり書くことが大切なんです。
late int count; void main() { print(count); // エラー: late initialization error count = 10; print(count); // この時点では問題なく出力されます }
null安全と「late」の関係
この「late」の考え方は、Dartが「null安全」な言語であることと関係しています。
つまり、「空っぽ」な状態を許さず、確実に値が入っていることを前提にすることで、予期せぬエラーを防ごうとしています。
この辺り、Javaなど昔の言語では「null pointer exception(NPE)」が頻発していたため、DartやSwiftなどのモダンな言語では、こうしたエラーを未然に防ぐ仕組みがあるわけです。
late String username; void main() { // username = null; // nullを許可していないためエラー username = 'DartUser'; print(username); // 出力: DartUser }
まとめ
「late」は、プログラムの安全性を保ちながらも「後から値を入れる」場面での柔軟性を確保できる便利なキーワードです。
Dartのnull安全機能と組み合わせることで、エラーの少ない堅牢なプログラムを作ることが可能になります。
プログラムの安全性と柔軟性を両立するために、ぜひ活用してみてください。