3

我想实现一个可以写 2 * a 的类型 A。无论如何都要重载运算符,以便在飞镖中实现这一点?

4

1 回答 1

2

你不能这样做2 * a,因为int(的类型2)只接受num它的一个参数operator*。这是定义:

num operator *(num other);

但是,您可以类中定义一个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 回答