スマホアプリ開発を夢見てFlutter/Dartの勉強を真剣にはじめてみたバックエンドエンジニア歴十数年の筆者が躓いた点やプログラミングに関してあらためて理解を深めたこと、などを記した備忘録です。
dartの変数
Dartは静的型付けの言語である。
まずは「静的型付け」の意味を正しくおさえておきます。
プログラミング言語で書かれたプログラムにおいて、変数や、サブルーチンの引数や返り値などの値について、その型が、コンパイル時など、そのプログラムの実行よりも前にあらかじめ決められている、という型システムの性質のことである。
「静的型付け」(2021年12月11日 (土) 05:00 UTCの版) 『ウィキペディア日本語版』
ふむふむ。変数宣言時に型が決まる、その後に異なる型の値を代入したらコンパイルエラーが発生すると、これはJavaなどと同じですね。しかしこれを静的型付けというんか。知らんかった。
それでは逆に「動的型付け」はというと、
動的型付けでは、定義では型の限定を行わず、実行時に合致するデータが渡されると期待する、または合致するデータであるかを判定する。
「動的型付け」(2022年5月30日 (月) 10:43 UTCの版) 『ウィキペディア日本語版』
こちらはPHPやJavaScriptなどのスクリプト言語が該当します。
静的型付けを実際にサンプルコードで試していきます。
// 型 変数名;
int num = 10;
num = 10.1; // コンパイルエラー
num = 'Hello world'; // コンパイルエラー
型推論
varを使って宣言した場合でも「型推論(自動的に初期値から型を判別してくれる機能のこと)」により
型が指定され、型指定時と挙動が同じになる。
// var 変数名;
var num = 10;
num = 10.1; // コンパイルエラー
num = 'Hello world'; // コンパイルエラー
ちなみに動的型付けのJavaScriptで以下を実行すると処理は成功する。
var num = 1;
num = "Hello world";
console.log(num); // 標準出力に'Hello world'
dartの動的型付け
dartは基本的に静的型付け言語だが、dynamic型を使用すれば動的な型宣言が可能になる。
// dynamic 変数名;
dynamic num = 10;
num = 10.1;
num = 'Hello world';
基本データ型などはdart公式サイトを参照
https://dart.dev/guides/language/language-tour#built-in-types