Dartの変数と定数
型アノテーションとは
注意:Null safetyについて記載なしです。
DartはJavaやC言語のような静的型付けをする言語とは違い型付けが任意となっている。
型を明示するためには型アノテーションを利用する。利用しない場合は型推論される。
型アノテーションには
- コードが読みやすくなる
- コンパイラやエディタの静的分析による実行時エラーを減らすことができる
と言った利点がある。
正しく(考えて)利用することでこのDartシステムの恩恵を最大限受けることができる!
新しい単語で難しく思うかもしれないが、型名(クラス名)を書くだけなのでjava やc言語を知っていればそれほど難しくはないはず。
変数宣言
型アノテーションなし
型アノテーションなしでの変数宣言時には var キーワードを使用する。
// 構文
var 変数名 = 値;
// 例
var flg;
var n = 1.2;
var s = "strings";
型アノテーションあり
// 構文
型アノテーション 変数名 = 値;
// 例
bool flg;
double n = 1.2;
String s = "strings";
定数宣言
定数宣言時には final or const キーワードを使用する。
final と const の違いは以下のようになる
final |
const |
|---|---|
| 値への参照が固定される | 値自体が固定される(コンパイル時定数) |
型アノテーションなし
// 構文
final 変数名 = 値;
const 変数名 = 値;
// 例
final n = 1.2;
const s = "strings";
型アノテーションあり
// 構文
final 型アノテーション 変数名 = 値;
const 型アノテーション 変数名 = 値;
// 例
final double n = 1.2;
const String s = "strings";
型アノテーションはどのような時に使うの?
型がわからない時、型を指定したい時に使うと良い。
例えば
final String s = 'text';
この場合は右辺で文字列を代入していることから型アノテーションがなくても、変数sはStringであることがわかる。
→ 型が簡単に推測できる場合は書く必要がない
→ finalやconstの場合はほとんど必要ないと言ってもいい(初期化時に判別できる)
ただ
final s = func();
のように、コード上に型のヒントとなる情報が少ない場合はあってもいいと思う。
ただこの場合、func定義時に戻り値に型アノテーションを使用していればエディタがサポートしてくれるので、なくてもコーディングにはあまり問題がない。
(あくまでも任意なので...あるといいよねって感じ)
参考リンク
Dart型システム