公式ページ
https://www.dartlang.org/
APIリファレンス
1.0リリース前のコードからは変更も多数。最新のAPIをチェックすべき。http://api.dartlang.org/docs/channels/stable/latest/
参考サイト
DARTことはじめ:http://usagi.github.io/intro-dart/#/DART入門:http://zenback.itmedia.co.jp/contents/www.sssg.org/blogs/hiro345/archives/10994.html
What is Dart:http://sitekamimura.blogspot.jp/2013/09/dart-what-is-dart-kindle-kathy-walrath.html
言語仕様
- クラスを使う
- クラスの外側にメソッドが記述可能
- オプションと引数:Javaと違って省略引数可能。C++のように後ろの引数を省略 or 引数に名前をつけて省略
- 文字列インターポレーション:php的に、"Hello, ${name}"とできる
- マルチライン文字列: ($s=<<END;) のような文字列リテラル
- 動的メソッドハンドリング:実行時にメソッドがあるか確認する
- カスケード演算子: JavaScript の with。
- オプショナルな型:小さなアプリなら型をかかない、ちゃんとしたアプリでは型をかく、が選べる
- レキシカルスコープ:{}が識別子のスコープ。クロージャ(Java8で実装予定のλや無名関数で実現する関数オブジェクトの一種)やローカル変数キャプチャもOK。
- ライブラリ:Pub(オープンなリポジトリで便利)
- Isolate:マルチスレッドでお互いのメモリにアクセス出来ないので安全
Javaで出来て、Dartで出来ないのは、メソッドのオーバーロード不可能。intが初期値を代入しないとnullになる。継承は1つまで。
※マルチライン文字列リテラル(以下だったらENDで囲まれた文字列の改行を維持する)
my $s = <<'END';
aaaa
iiii
uuuu
END
※カスケード演算子
with (document) {※邦訳版
//このブロックの中ではdocument.を省略できる
var hoge = getElementById('hoge');
...
}
http://www.cresc.co.jp/tech/java/Google_Dart/DartLanguageSpecification_about.html
コードのサンプル
コード動かす
トップページから必要なSDKをダウンロードして解凍すると、Dart Editor (もとはEclipse)が入っているので起動する。HelloWorld
新しいプロジェクト(WebApplication)を作成すると、webディレクトリの配下に以下のファイルが用意される。
[プロジェクト名].css
[プロジェクト名].dart[プロジェクト名].html
その他に、packages/browserディレクトリが出来て、中に以下のファイルができる。
dart.js
hiterop.js
編集するのは、「.dart」の拡張子を持つ dart ファイル。後は、htmlとcssを編集する。C系と同じようにエントリーポイント(main)からプログラムが実行される。
dartを編集してから、htmlを右クリックして「run as JavaScript」を実行するとdart2jsが動いてJavaScriptが生成される。
構文
文字列
- 文字列リテラルはECMAScriptライク
- ${xxx}や\nなど、シェルスクリプトライクな文法が使用可能
- ${new Date.now().day -1}などの式を、文字列内に内挿可能
型と変数
- bool / int / double / num
- String / List / Set / Queue / Map / ...
- final 修飾で定数宣言(C++ の const と似ている)
制御文
Javaの構文をほぼそのまま使える
- for / for-in / while / do-while
- switch case break / if else / ?:
- break / continue
- try throw catch
演算子
Java、C++にある演算子はほぼそのまま使える関数とラムダ式
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void print2(var v) { print(v * 2); } | |
main() { | |
var vs = [1, 7, 3, 2, 0, 5, 0, 4]; | |
print('--1--'); | |
vs.forEach(print); | |
print('--2--'); | |
vs.forEach(print2); | |
print('--3--'); | |
vs.forEach( (a) => print(a*a) ); | |
} |
クラスの継承
前半にも書いたが、多重継承は不可。ジェネリクス
使える。型制約も可能。DART SDK
- dart : Dart処理系(Dart VM) Dart VMを搭載したブラウザだと動作。V8より高速。
- frogc(dart2js) : dartからjsへのコンパイラー
これ直接使うのはしんどい。Dart Editorのバックエンドとして動いてるって知っておく程度。
DART用HTMLファイル
cssとdartファイル指定。JavaScriptを生成してWebサーバに配置すればOK.
毎日さっくりと使えるTODOリストが無かったのでサンプルから作成。
以上。ワクワクする仕様。何つくろうかな。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<head> | |
<meta charset="utf-8"> | |
<title>A Minimalist App</title> | |
<link rel="stylesheet" href="helloworld.css"> | |
</head> | |
<body> | |
<h1>A Minimalist App</h1> | |
<p>Hello world from Dart!</p> | |
<div id="sample_container_id"> | |
<p id="sample_text_id"></p> | |
</div> | |
<script type="application/dart" src="helloworld.dart"></script> ←対応するdartファイルを指定する | |
<script src="packages/browser/dart.js"></script> | |
</body> | |
</html> |
チュートリアル
https://www.dartlang.org/codelabs/darrrt/#set-uphttps://www.dartlang.org/docs/tutorials/add-elements/#copy-app
0 件のコメント:
コメントを投稿