このページには広告が含まれる場合があります。
もくじ
問題
final キーワードはどのような場合に使いますか?
- 再代入可能な変数
- 初回代入後に変更できない変数
- グローバル変数
- 定数
正解と解説動画
←「+」をクリックしてください
正解
2.初回代入後に変更できない変数
解説動画
Dartでプログラミングしてると、変数宣言で「final を使う場面ってどんな時?」と迷うこと、ありませんか?そんな疑問を解消するために、この動画では final の基本的な使い方や、似たようなキーワードである const との違いを詳しく解説しています。
final
キーワードの基本
-
final
って何?
一言で言うと、「一度設定した値を二度と変えられなくする」 キーワードです。
例えば、定期的に変わる値は必要だけど、一度設定したら絶対に変更させたくない!みたいな時に使います。 -
どう使うの?
実際にコードで確認してみましょう。
void main() { final maxSpeed = 120; // 初回代入 // maxSpeed = 150; // エラー: 再代入はできません! print(maxSpeed); // 出力: 120 }
ポイントは、final
を使った変数は 再代入できない ということ。値を固定して「これ以上変えちゃダメ!」とガッチリ守りたい時に使います。
const
との違い
final
と一緒によく出てくるのが const
。これ、似てるようで全然違うんですよね。
-
final
の特徴- 値はプログラム実行中に決定。
- 動的に決まる値(例えば現在時刻とか)も設定可能。
-
const
の特徴- 値はコンパイル時に決定。
- 動的な値は使えない。
void main() { final currentTime = DateTime.now(); // 実行時に現在時刻を設定 // const currentTime = DateTime.now(); // エラー: const には動的な値を設定できません }
つまり、実行時に値が動的に変わる場合は final
を選ぶのが正解!逆に、絶対に変わらない定数なら const
を使えばOKです。
スコープと final
の使いどころ
スコープって何?
スコープとは変数が「どこまで使えるか」の範囲のことです。例えば、クラス全体で使えるプロパティ(グローバル変数っぽいもの)と、メソッド内だけで使えるローカル変数があります。
class Car { final int maxSpeed = 200; // クラス全体で使えるプロパティ void showSpeed() { final int currentSpeed = 100; // メソッド内だけで使えるローカル変数 print('Max Speed: $maxSpeed, Current Speed: $currentSpeed'); } } void main() { final car = Car(); car.showSpeed(); }
maxSpeed
クラス全体でどのメソッドからでもアクセス可能。安心してどこでも使える共有変数的な存在です。currentSpeed
メソッド内でしか使えないローカル変数。閉じられた範囲内でだけ使えます。
まとめ
final
は、一度値を設定したら変更したくない変数に使う。const
は、コンパイル時に値が決定する「絶対固定」な定数に使う。- スコープ(変数が使える範囲)を意識して、適切に使い分けることが大事。
Dartの final
はプログラムの安全性を高めてくれる頼れるキーワードです。これを使いこなして、バグの少ないコードを書いていきましょう!次はぜひ const
との違いもしっかり理解して、実践に活かしてくださいね。