Try Dartやってみた感想

昨日Dartがようやく1.0になったようではてブにあがってたのでチュートリアルやってみた.
Try Dart (一時間くらいのチュートリアル)

Dart(ダート もしくはダーツ。当初は Dash と呼ばれていた)はグーグルによって開発された
ウェブ向けのプログラミング言語である。 2011年10月10日~12日に開催された デンマークのオーフスで
開催された「GOTOカンファレンス」[2]で公開された[3]。この言語は、ウェブブラウザー組み込みの
スクリプト言語であるJavaScriptの代替となることを目的に作られた。

最終的にはブラウザで直接Dartを動作させたいんだと思うけど,Dart->JSができるので個人的にはAltJS難民として期待して触ってみた.

Dartの文法の印象

  • Javaの文化(文法や命名規則)を多く受け継いでいるので普段からJava書いてる人には好まれそう.
  • 逆に{}(カーリブラケット)でくくったり 文末に;(セミコロン)が必須だったりするのであんまり今風っぽくないかも.
  • 動的な型付けで,型は明示的に宣言するのがデフォっぽい.
  • クラスベースのオブジェクト指向言語.
  • vimのプラグインはシンタックスハイライトだけで,DartEditorをつかうとデバッグやシンタックスチェックも出来る.

学習コスト低そうだし,個人的にはかなり気に入っていてこれからドキュメントとか読んでいこうと思ってる.

Try Dartに出てきた特徴的な文法

(Dartのシンタックスハイライト使えないっぽい)

型のキャスト

(e.target as InputElement)

キャストの文法が独特で x as y って書くとxをyの型に変換してくれる.
pythonのasみたいなものかと思ったら全然違った.

cascade演算子

    genButton ..disabled = true  ..text = 'Aye! Write a name!';
    genButton.disabled = true;
    genButton.text = 'Aye! Write a name!';

cascade(カスケード)っていうのは情報工学の分野で"伝達する"って意味らしくて,
この..って演算子を使うと同じインスタンスに連続してアクセスできる.
つまり1つ目のコードは2つ目と等価なコードになってる.

プライベート変数

  String _appellation;

Javaのpublic private みたいなアクセス範囲を限定する文法はないんだけど,
変数名の始めを_(アンダーバー)で始めると(Javaでいう)privateな変数になる

引数

PrirateName( {String firstName , String appellation} ){
// todo
}
// ...
setBadgeName( new PrirateName(firstName:inputName) );

引数の一部{}(カーリブラケット)でくくると,その項目は必須ではなくなる(オプショナルパラメータ)
オプショナルなパラメータに引数を渡すときには (メソッドで定義された引数名):(変数名) の形で書く.

コンストラクタ

PrirateName.fromJSON(String jsonString){
// ...
}

クラス名.xxxもコンストラクタとして扱われる.
コンストラクタのオーバロードは出来ないっぽいしその代わりのかなって思ってる.

Getter(ゲッター)

String get jsonString {  
return '{ "f" : "$_firstName" , "a" : "$_appellation" }'; 
}

JavaだとGetterはただのメソッドだけど,DartでGetter宣言するとプロパティとして扱われる
(アクセスするときに文末にカッコがいらない)

fatArrow演算子

String get jsonString  => '{ "f" : "$_firstName" , "a" : "$_appellation" }';
String get jsonString {  return '{ "f" : "$_firstName" , "a" : "$_appellation" }'; }

メソッド定義の文法のシンタックスシュガーで上と下は等価なコードになる.