【 Flutter 】Flutter を 基礎 から 学習 ( Dart編 ) part06 Built-in型
「基礎 から 学ぶ Flutter 」という書籍で 学習 したことを ブログでアウトプットしていこうと思います。今回は Dart編 ( part06 )です。
前回
【 Flutter 】Flutter を 基礎 から 学習 ( Dart編 ) part05 Built-in型
今回もBuilt-in型の続きからです。
変数
Built-in型
Map
キーと値を関連図けるクラス。
C#で言うとDictionaryに相当します。
このクラスもデフォルト実装ではLinked
ということで順序を保持するようになっています。
・・・Set
もそうですがMap
って順序必要な場面が多いということですかね🤔
指定したキーが無い場合はnull
が返ってきます。
代入・取得等は以下のように行います。
var map = Map<String, int>();
map['foo'] = 100;
assert(map['foo'] == 100; // 本書では「assert(map['foo] == 100; 」となっていおり、fooの後ろにシングルクォーテーションが足りない。おそらく誤記。
Set
でも少し紹介しましたが、Mapは省略形が存在します。
var hoge = {
'first' : 'one',
'second' : 'two',
};
書きやすそうですが慣れが必要そうです。
List
同様、以下の操作に対応しています。
- Spread Operator
- null-aware Spread Operator
- collection if
- collection for
Runes
ランズ? Googleで確認すると「ルーンズ」と発音するようです。
特殊な文字や記号を表現するために用いられるクラスです。
DartPadで実行してみました。
void main() {
var clapping = '\u{1f44f}';
print(clapping);
print(clapping.codeUnits);
print(clapping.runes.toList());
Runes input = Runes(
// 「\u」以降に数字以外のリテラルが登場する場合はブロック({})を記述する仕様なのでしょうかね?
'\u2665 \u{1f605} \u{1f60e} \u{1f47b} \u{1f596} \u{1f44d}'
);
print(String.fromCharCodes(input));
}
Runes
を使用しなくても表現できているような気がしますが・・・。
こういうクラスもあるんということを覚えておきたいと思います。
Symbol
私的に重要な一文を発見しました。
Flutterの場合では、Dartのリフレクション機能を使えないようにしてあるので、
なんということでしょう!「メタ」での実装ができないということでしょうかね。
私はJavaでの開発が長かったのでちょっと戸惑います。
Javaの有名どころのフレームワークはこのリフレクションをよく利用しており、私自身も使う機会が多かったです。
リフレクションを使用しなくても十分細やかな実装ができるというとらえ方もできますよね。
ポジティブな情報としてとらえます!
で、このSymbolはあまり利用する機会はないとのこと。
最後に
Built-in関数を学習してきました。
私は特に難しくは思わなかったのですが本書は最低限必要なBuilt-inの型をだけを紹介しているだけで本当はもっとディープなものなんだと感じます。
今日はここまで!
ディスカッション
コメント一覧
まだ、コメントがありません