解けたら 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 でやってみた】として書いていきたいと思います。