hiko1129’s blog

開発に関することを記録するためのブログ

雑なDart入門

雑なDart入門

はじめに

これは軽く個人的にまとめたもので厳密な内容にはなっていません。

詳しい内容はドキュメントを参照してください。

基本

main関数から実行される。main関数は必須。現状文末セミコロンは必須。

mainはGoやJavaなどと同じ感じ。

main() {
  var hoge = 'hoge';
  print(hoge);
}

変数

var, dynamicなどあるが基本的には後述するconstとfinalを多用することになる と思う。JSでconstを基本的に使うのと同様。

varは型が推論されるためnameにはString型の'hoge'が入る。

var name = 'hoge';

dynamicはdynamic型(動的な型)になる。

dynamic name = 'hoge';

下記のように型を明示的に書くことも可能。

String name = 'hoge';

デフォルト値

デフォルト値(ゼロ値)はすべてnullになる。

String hoge;
assert(hoge == null);

Finalとconst

constもfinalも再代入不可だがfinalはJSのconstに似ている挙動(finalは参照先が変わる可能性がある)

組み込み型

  • numbers (int, double)
  • strings
  • booleans
  • lists
  • sets
  • maps
  • runes
  • symbols

関数

Javaっぽく前置型で型を書いてJavascriptっぽく書けばDartになるってイメージ。よく聞くJavaっぽいJavaScriptまま。

String hoge() {
  return 'hoge';
}

オプションパラメータ

String echo({ String word }) {
  print(word);
  return word;
}

echo(word: 'hello');

名前付きオプションパラメータの定義時には{}をつけて記述する。

[]で囲んだ引数はオプションになる。

String echo([String word]) {
  print(word);
  return word;
}

echo('hello');
echo();

関数は第一級オブジェクト

JSと同じように関数を関数に渡せるよってだけ。

無名関数

var list = ['apples', 'bananas', 'oranges'];
list.forEach((item) {
  print('${list.indexOf(item)}: $item');
});

() {}で無名関数になる。

まとめ

他にもいろいろあるけどだいたいちょっと変わったJavaっぽいJavaScriptという認識で軽くドキュメント見れば基本的には書けるイメージ。

個人的に気になったいくつかの書き方(今回と重複あり)はあとでまとめる。

参考文献

A Tour of the Dart Language