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
になっていることを知っていなければなりません。