2014年2月21日金曜日

【Dart でやってみた】これが解けたら IQ150 の問題

以前 Twitter で話題になったツイートで、次のようなものがあります。
解けたら IQ150 以上の問題

6 + 4 = 210
9 + 2 = 711
8 + 5 = 313
5 + 2 = 37

7 + 6 = ??


解けたら本当に IQ150 以上かどうかはさておき、これは「+」の実装を変えたら実現できるわけです。
つまり演算子オーバーロード(オペレータオーバーロード)です。


演算子オーバーロードとは上記問題のように、演算子の実装を変えることができる機能です。
Dart にもこの機能が用意されていますので、今回はこの IQ150 の問題を Dart で実現してみます。


まずは演算子オーバーロードのためのクラス。
class Iq150Problem {
  
  int x;
  Iq150Problem(this.x);
  
  operator + (Iq150Problem iq150) {
    
    int i1 = this.x - iq150.x;
    int i2 = this.x + iq150.x;
    
    return i1.toString() + i2.toString();
  }
}


演算子オーバーロードした「+」を実際に使用すると次のようになります。
import 'iq150problem.dart';

void main() {
  
  Iq150Problem iq1 = new Iq150Problem(7);
  Iq150Problem iq2 = new Iq150Problem(6);
  
  print(iq1 + iq2);
}


実行結果は 113 です。


この blog 初の技術的な内容でした。
今後は興味深い機能を見つけたら【Dart でやってみた】として書いていきたいと思います。

2014年2月2日日曜日

Dart SDK 1.1

2013年の11月に Dart SDK 1.0 が公開されたばかりですが、
2014年1月16日に SDK 1.1 が公開されました。


1点目の変更点は、JavaScript への出力関連の速度向上です。
JavaScript へのコンパイルに関しては、プレリリースのころから、色々と言われてきましたので、かなり力を入れているのだと思います。
現時点では JavaScript と同等な実行速度であると発信されています。


2点目の変更点は、サーバーサイドでの開発環境の強化です。
今回のバージョンアップでサーバー周りの拡張機能が多く追加されています。
また、開発環境となる DartEditor に関しても、多くの機能が追加されたようで、開発時の生産性が向上しているようです。
#これらはまだ未検証なので、また試した後に追記します。。。


昨年末から SDK のバージョンアップが頻繁に行われるようになり、ついていくのがやっとな状態ですが、できる限りタイムリーに情報を伝えられるようにしていきます。