我想实现一个可以写 2 * a 的类型 A。无论如何都要重载运算符,以便在飞镖中实现这一点?
问问题
340 次
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 回答