在 Dart 中重载双精度运算符

问题描述 投票:0回答:1

在 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
flutter dart operator-overloading overriding
1个回答
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
}

© www.soinside.com 2019 - 2024. All rights reserved.