在 Dart 中,我可以重写
toString
方法来更改对象用作字符串时返回的字符串内容。
我需要更改对象用作双精度对象时的行为。
我想通过 Dart 中的 C++ 代码获得相同的结果:
class Value {
private:
double value;
Color color;
public:
Value(double value, Color color) : value(value), color(color) {}
operator double() const {
return value;
}
};
这意味着我可以像这样使用
Value
类中的对象:
Value value = const Value(value: 13.0, color: Colors.blue);
double a = value + 3; // a = 16.0
double b = value - 3; // b = 10.0
double c = value; // c = 13.0
要获得类似的结果,您可以定义
+
类的加法运算符 -
和减法 Value
运算符:
class Value {
final double value;
final Color color;
const Value({required this.value, required this.color});
@override
String toString() => "The value is $value.";
double toDouble() => value;
double operator +(double other) {
return value + other;
}
double operator -(double other) {
return value - other;
}
}
您的
main.dart
将变成:
void main() {
final value = Value(value: 13.0, color: Colors.blue);
double a = value + 3; // a = 16.0
double b = value - 3; // b = 10.0
double c = value.toDouble(); // c = 13.0
}