- 我在flutter中创建了一个自定义的数字类,并希望在类与普通整数和双精度数之间进行基本的算术运算。* 因此,我在类定义中重载了乘法运算符,并尝试使用它。示例(不是实际类,但类实现很重要:
class MyClass {
double value;
MyClass(this.value);
MyClass operator *(dynamic other) {
if (other is num) {
return MyClass(this.value * other);
}
throw ArgumentError("Unsupported operation");
}
}
void main() {
MyClass myObject = MyClass(5.0);
MyClass result1 = myObject * 2;
MyClass result2 = 2 * myObject;
print(result1.value); // Expected output: 10.0
print(result2.value); // Expected output: 10.0
}
但是在第二种情况下(2 * myObject
),我得到了一个错误,因为你不能把MyClass
加到num
上,而你可以把num
加到MyClass
上。
是否有任何方法可以使操作员过载,以便实现第二种情况?(例如,在C++中可以)
1条答案
按热度按时间xfyts7mz1#
是的,可以使操作员过载,以便实现第二种情况。您可以定义一个新的操作符,该操作符将num作为其左操作数,并将MyClass对象作为其右操作数。下面是一个示例实现:
在这个实现中,我们定义了一个新的操作符
+
,它将num作为左操作数,将MyClass对象作为右操作数。该实现简单地将num添加到MyClass对象的值中,并返回一个新的MyClass对象和结果。请注意,您可以以类似的方式定义其他运算符,以支持其他算术运算。