【问题标题】:+= operator overloading in Dart+= Dart 中的运算符重载
【发布时间】:2019-07-17 02:32:06
【问题描述】:

我尝试在我的班级中进行以下重载:

class Array extends ListBase<double> {
    List<double> l = [];

    List<double> operator +=(List<double> b) {
        var c = Array.length(l.length);
        for(int i = 0; i < l.length; i++) {
          c[i] = this[i] * b[i];
        }
        return c;
      }
}

但 Dart 编译器显示错误消息:字符串 '+=' 不是用户可定义的运算符。有没有办法让运算符+=重载其他类类型?

【问题讨论】:

    标签: dart


    【解决方案1】:

    仅重载operator +。 Dart 重用具有众所周知的语义含义的运算符,例如 +=。 如果基类中已经定义了运算符,则添加@override注解。

    【讨论】:

    • 但是,如果我已经为另一个函数定义了+ 运算符,我该怎么办?
    • 如果你已经超载了operator+,那么我认为+=应该已经可以工作了。 dart.dev/guides/language/language-tour#assignment-operators
    • 但问题是:运算符+的重载在上面的类中不起作用,因为它是从ListBase扩展而来的。在这种情况下如何使 + 重载?
    • 添加@override注解:@override List&lt;double&gt; operator +(List&lt;double&gt; b) {...
    • 为我工作,谢谢。您可以在答案中添加此覆盖详细信息吗?
    猜你喜欢
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    相关资源
    最近更新 更多