Menu
CoddyTech

基本的なNull安全性

CoddyのDartジャーニー「基礎」セクションの一部。レッスン 14/94。

Null safetyは、どの変数が空(null)になり得るかを制御することで、予期しないアプリのクラッシュを防ぐのに役立ちます。

デフォルトでは、変数には値が入っていなければなりません。

void main() {
  String name = 'Dart';
  print(name);  // 出力: Dart
  
  // これは問題を引き起こします:
  // name = null;  // 許可されていません
}

null 値を許可するには、型の後に?を追加します:

void main() {
  String? name = 'Dart';
  print(name);  // 出力: Dart
  
  // これで null を代入できます
  name = null;
  print(name);  // 出力: null
}

任意の型の nullable 変数を宣言できます。

void main() {
  int? age;  // 初期値がないため、デフォルトでnullになる
  double? price = 19.99;
  bool? isAvailable = true;
  
  print(age);         // 出力: null
  print(price);       // 出力: 19.99
  print(isAvailable); // 出力: true
  
  // これらはいずれもnullに変更できる
  price = null;
  isAvailable = null;
}

 

Null安全性は、コードが操作でnull値を使おうとしたときに発生する予期しないクラッシュからアプリを守るのに役立ちます。

challenge icon

チャレンジ

初心者

? 演算子を使って、基本的な null 安全性を示す Dart プログラムを作成しましょう。

  1. username という名前の String 変数を宣言し、null 安全性演算子 ? を使って null に設定します(String?)。
  2. userAge という名前の int 変数を宣言し、null 安全性演算子を使って null に設定します。
  3. 次の正確な形式で、ラベルを付けて両方の変数を出力します。
Username: null
User age: null

次に:

  1. username 変数に "DartLearner" を代入します。
  2. userAge 変数に 25 を代入します。
  3. 前とまったく同じ形式で、両方の変数をもう一度出力します。

出力は、上記の正確な形式と一致する必要があります。

自分で試してみよう

void main() {
  // ここでnull許容の変数を宣言する
  String? username = ?;
  int? userAge = ?;
  
  // 初期値をラベル付きで出力する
  print("Username: " + username.toString());
  print("User age: " + userAge.toString());
  
  // 変数に新しい値を代入する
  username = ?;
  userAge = ?;
  
  // 更新後の値を同じラベル付きで出力する
  print("Username: " + username.toString());
  print("User age: " + userAge.toString());
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Dartオンラインコンパイラ