|

Dartの勉強1−2:変数とデータ型

ChatGPT先生に監修して頂いてDartの学習を再開します。
これまでの記述に不足していたところを適宜くわえていきます。今回は、変数とデータ型です。


変数とは、数値や文字列等のデータを保存しておく入れ物で、何らかの名前をつけます。


int year = 2025;

これで、変数yearに2025という整数の値が保存されたことになります。<p>


データ型とは、変数に入っている値の種類です。先ほどの例は整数ということでintを冒頭につけて、yearは整数だと明示しています。

  1. 型推論
    Dartは変数をvarをつけて最初の値を与えると勝手に型を推察してくれます。

    
    var name = 'John';

    これで変数nameには文字型になり、Johnが値として代入されます。

  2. null安全性
    nullというのは、何もない状態で整数でも文字でもなんでもない状態です。この状態だと処理ができずに止まってしまうことが多いので、普通に変数を宣言した場合は、必ず何かしらの値が入っている状態にする必要があります。ただし、objectのメソッド等でnullを許容している場合もあります。この場合は、以下のようにデータ型後に?をつけて変数を宣言します。

    
    String? name //nullを許容する。
    
    
    void main() {
    String name;
    assert(name == null); //nullを許容しないので、ここでエラーになる
    }
    
  3. late
    nullを許容しないけど、とりあえず、変数だけ宣言する方法としてlateがあります。lateの使い方には2つのケースがあります。
    ①後で値が入ることを前提とした宣言

    
    late String name; //ここでは値が入っていないので、nullになっている。
    void main() {
      name = 'John'; //ここで初めて値が入った。
      print(name); //nullではないのでエラーにならない
    }
    

    ②実際に、その変数が呼び出されるまで値が入らない。

    
    String myName() {
      return 'John';
    }
    
    void main() {
      late String name = myName(); //この段階ではnameはnull状態。でも呼び出されていないので実害なし
      print(name); //ここでnameが呼び出されて初めて値が代入された(初期化された)。
    }
    
  4. final
    finalは実行時に値が入り、その後、実行中は値が変わらない変数のことです。

    
    void main() {
      final now = DateTime.now(); //プログラムが実行され最初に呼び出された日時が代入される。コンパイルされた時点では未定。
      print(now);
      now = DateTime.now(); //ここでエラーとなる。
    }
    =エラーメッセージ=
    compileDDC
    main.dart:4:10: Error: Expected ';' after this.
      name = 'john'
             ^^^^^^
    main.dart:4:3: Error: Can't assign to the final variable 'name'.
      name = 'john'
      ^^^^
    
  5. const
    constは定数なので、コンパイル時に定義した後は変わりません。
    ですが、こんなことができます。

    
    void main() {
      var foo = const [];
      print(foo); //空の配列が表示
      foo = [3, 5, 4];
      print(foo); //[3, 5, 4]と表示され、エラーになりません!
      foo = [2, 4];
      print(foo); //[2, 4]と表示され、エラーになりません!
    }
    
    

類似投稿

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.