このページには広告が含まれる場合があります。
もくじ
問題
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 との違いもしっかり理解して、実践に活かしてくださいね。
















