プログラミング言語 Dart を使ってみた

phiary に引っ越しました. 毎日プログラミングやWebに関する情報を発信しています! RSS 登録してたまに覗いたり, tweet やハテブして拡散してもらえると幸いです.

Pocket

つい先日, 一般にも公開されたプログラミング言語 Dart を使ってみました.

Web上に動作環境も用意してくれていたので軽く遊んでみたのでその紹介.

公式サイトはこちら.

Hello, world!

お馴染み, Hello, world!

main() {
  print('Hello, world!');
}

print sample

print サンプル. 文字列内でも ${式}という形で書けば評価してくれるみたいです. 地味に便利!!

ちなみにオブジェクトを print した際は暗黙的にメンバのtoString() が呼ばれます. なので自作の class を定義した際は必ず toString() をオーバーライドしておきましょう!!

Run

main() {
  var hoge= 'test';
  var foo = 2;
  var bar = 42;
  
  print('hoge=$hoge');
  print('foo+bar=${foo+bar}');
}

Vector2

演算子オーバーロードがサポートされている!! ってことで数学 Vector2 クラスを作ってみました.

最近は, JavaScript と Python 三昧だったのでありがたやぁ~!!

Run

/**
 *  @brief  Vector2 class
 */
class Vector2 {
  Vector2(this.x, this.y);
  
  length() {
    return Math.sqrt(this.x * this.x + this.y * this.y);
  }
  
  lengthSquared() {
    return this.x * this.x + this.y * this.y;
  }
  
  normalize() {
    var len = this.length();
    this.x /= len;
    this.y /= len;
    return this;
  }
  
  toString() {
    return '(${this.x}, ${this.y})';
  }
  
  operator+ (rhs) {
    return new Vector2(this.x+rhs.x, this.y+rhs.y);
  }
  
  operator- (rhs) {
    return new Vector2(this.x-rhs.x, this.y-rhs.y);
  }
  
  operator* (value) {
    return new Vector2(this.x*value, this.y*value);
  }
  
  operator/ (value) {
    return new Vector2(this.x/value, this.y/value);
  }
  
  static dot(lhs, rhs) {
    return lhs.x*rhs.x + lhs.y*rhs.y;
  }
  
  var x, y;
}


main() {
  var a = new Vector2(3, 4);
  var b = new Vector2(5, 6);
  
  print('a = $a');
  print('b = $b');
  
  print('a+b = ${a+b}');
  print('a-b = ${a-b}');
  print('a*5 = ${a*5}');
  print('b/2 = ${b/2}');
  
  print('a.length() = ${a.length()}');
  print('b.lengthSquared() = ${b.lengthSquared()}');
  print('b.normalize() = ${b.normalize()}');
  print('b.length() = ${b.length()}');
  print('Vector2.dot(a, b) = ${Vector2.dot(a, b)}');
}

感想

『JavaScript の欠点を補い, パフォーマンス, セキュリティ面でも優れ, かつ大規模プログジェクトにも耐えうる言語』

まだざっくりとしか触っていないので把握できていないことが多いのですが, 少し触った印象としては最近の C# に似ているかなと思いました.

型がありつつも, 無視出来る仕様になっていてユーザが用途にあわせて選べる点は好感を持てます.

継承関係も問題なく使えたので, 確かに大規模でもいけそうな予感がします.

corelib はひと通り触ってみたので, 気が向いたときにでもまとめてサンプルを公開しようと思います.

今年の年末には, VM とクロスコンパイラが提供予定らしいです. なのでそれまでに備えて Web のテスト環境でちょこちょこと遊んで行こうと思います.

来年頭には, dart でバリバリゲーム作ってる予感… やべっヨダレがww

TRACK BACK URL

POST COMMENT

メールアドレスが公開されることはありません。

COMMENT