PONCOTSU

インフラ領域を主にあれしてます

Dartの変数

変数を宣言

基本形はこう。 型 変数名 = 値; という形をとる。

int number = 1;
String name = 'hoge';

さらにDart型推論機能を持っているので、var記法 を使って、型を指定せずに変数を宣言することも可能。

var number = 1;
var name = 'hoge';

dynamic型

dynamic を使うと、動的に変数宣言できる。
他の言語にもあまりない名前の型ですが、 TypeScriptだと Any に近い振る舞いをする型っぽい?(詳しい方、教えてくださいmm)
dynamic型 の変数にはどんな型のオブジェクトでも入れることが可能となるため、型安全が保証されなくなるので、使う時は本当に必要な時だけにしたほうがよさそう。
ってことで、軽く検証してみる。
dynamic型 を使えば変数宣言時は何も考えず宣言ができるが、その変数を利用する際には、呼び出し側が変数の型を知っている必要があることがわかる。

void main() {
  void foo(String name) {
      print(name);
  }

  void bar(int name) {
      print(name);
  }

  dynamic name = "hoge";
  foo(name); // hoge
  bar(name); // type 'String' is not a subtype of type 'int'
}

bar(name) を呼び出すと、bar(name)int型 の引数を期待しているのに、Stringが入ってきたのでエラーにしたよ、という結果になります。
この場合、開発者は bar() を使う時に 変数name の実際の型が String になっていることを知っていなければなりません。