【 Flutter 】Flutter を 基礎 から 学習 ( Dart編 ) part02 文法
「基礎 から 学ぶ Flutter 」という書籍で 学習 したことを ブログでアウトプットしていこうと思います。今回は Dart編 ( part02 )です。
前回
【 Flutter 】Flutter を 基礎 から 学習 ( Dart編 ) part01 歴史
今回から文法です。特殊な文法が無いことを祈ります。
コンセプト
すべてオブジェクト
Dartの世界では文字列はもちろん、数字や関数もオブジェクト(クラスのインスタンス)として扱われます。
nullもオブジェクトになります。Rubyもこの考え方で実現されています。
Dartの世界の一番偉いクラスはObject
クラスとなります。
この部分はJavaと同じですね。
型推論
型宣言にvar
が使えます。
int i = 0;
と実装するのではなくvar i = 0;
と実装できます。
勝手にiをint
だと判断してくれます。
私の周りだけ?かもしれませんがこのキーワード嫌う人がいまだ多いです。
昔、Visual Basicだったでしょうか。variant
という型がありました。
このvariant
という型は通称「なんでも型」と呼ばれ、宣言すればどんなものでも格納できる箱が出来上がるのでポンポン使われていました。
そしてこの実装が原因でポンポン不具合が発生し現場が大混乱したことがあります(笑
※このvariant
とDartのvar
は全然違うものだと思います。
また、型宣言を見ただけでどんなものが格納できるのかわからないから・・・という理由で使用しないプロジェクトもあったりします。
いろんな考え方があるもんですねぇ🤔
Javaでも10からvarをサポートしました。
それまではHogeHogeFugaFugaSupportClass a = new HogeHogeFugaFugaSupportClass();
という呪文のような実装が行われていました。
私はvar
の方がすっきり実装できるので好きなのですがね。
Generic型
この機能はとても重要だと思います。
メソッドやコレクションに対して格納できる型(もしくは渡せる型)を指定でき、これをコンパイルレベルでチェックできます。
違反するとコンパイルエラーで実行できません。
これが意味するとことは「実装者が型のチェックを事前に行わなくてよい」ということです。
しかしながら、「なんでも格納したいんだよ!」ということも稀にあります。Dartではdynamic
という型が利用できます。
List<int> list = [1, 2, 3]
とするとintしか格納できません。
List<int> list = [1, 2, 3, '?']
とすると、文字が混入しているのでコンパイルエラーとなります。
トップレベルの関数・変数
クラスに所属しない関数や変数を実装できます。
PHPでいうとことのグローバル変数みたいな存在でしょうか。
Pythonでも実現されている機能ですね。
可視性
Dartでprivate
を実現したい場合は識別子の先頭にアンダースコア(_)
で始めます。
purotected
とかあるのでしょうか?
識別子
1文字目はアルファベットかアンダースコア。
2文字目以降はアルファベットと数字の組み合わせです。
式と文
Dartには式
と文
が存在します。
文は値を返さない。式は値を返すという理解で進めます。
最後に
コンセプトについては理解しました。
だいたいほかのスクリプト言語と同じでしょうかね。
知っているというのと使いこなせるはまた別です。
使いこなせるようにがんばります。
今日はここまで!
ディスカッション
コメント一覧
まだ、コメントがありません