gpt4 book ai didi

dart - 如何做一个高效的运算符+=

转载 作者:行者123 更新时间:2023-12-02 01:48:45 25 4
gpt4 key购买 nike

看起来好像 operator+= 不是可以由用户定义的东西(来自 Dart 语言规范):

The following names are allowed for user-defined operators: <, >, <=, >=, ==, -, +, /, ̃/, *, %, |, ˆ, &, <<, >>, []=, [], ̃.

但是,如果您提供一个operator+(...),那么在调用 operator+= 时会使用它。

我的问题是,如何在不需要创建新实例的情况下实现高效的operator+=()

class DividendBreakdown {

DividendBreakdown(this.qualified, this.unqualified, this.capitalGainDistribution);

bool operator==(DividendBreakdown other) =>
identical(this, other) ||
qualified == other.qualified &&
unqualified == other.unqualified &&
capitalGainDistribution == other.capitalGainDistribution;

num qualified = 0.0;
num unqualified = 0.0;
num capitalGainDistribution = 0.0;

DividendBreakdown.empty();

DividendBreakdown operator +(DividendBreakdown other) {
return new DividendBreakdown(qualified + other.qualified,
unqualified + other.unqualified,
capitalGainDistribution + other.capitalGainDistribution);
}
}

最佳答案

你不能,除非你也改变 + 运算符的行为。 += 运算符和其他复合赋值运算符只是普通运算符和立即赋值的简写。

无法在 + 运算符中提取额外信息来确定是否立即执行赋值,因此您必须始终返回一个新实例以防未执行赋值。

相反,使用您自己的方法:

DividendBreakdown add(DividendBreakdown other) {
//...
}

关于dart - 如何做一个高效的运算符+=,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24022731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com