3

2 * a と書けるタイプ A を実装したいと思います。これがダーツで可能になるように、演算子をオーバーロードする方法はありますか?

4

1 に答える 1

2

(のタイプ) は、その のパラメータのみを受け入れる2 * aため、実行できません。定義は次のとおりです。int2numoperator*

num operator *(num other);

ただし、 in classを定義operator*(int mult)Aできます。したがって、あなたは呼び出すことができますa * 2。例を次に示します。

class A {
  String s;
  A(this.s);
  A operator*(int mult) => new A(new List.generate(mult, (_) => s).join());
}
main() {
  final result = new A('NaN') * 16;
  print('${result.s} Batman');
  // displays NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN Batman
}
于 2013-07-13T19:08:28.817 に答える