`operator () { ... }` 在 Dart 中做什么?

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

这是一个简单的 dart 类:

class MyOperatorClass {
    int operator () {
        return 5;
    }
}

我今天注意到编译没有任何问题。这让我想知道,

operator ()
是什么意思?

通常在 dart 中,您使用

operator
来实现运算符。又名
operator +(other)
operator ~()
。但是
operator ()
似乎没有与之相关的操作符...

起初我以为这就是使对象可调用的方法,但事实证明,

MyOperatorClass()()
无法编译(这是因为可调用对象实际上实现了
call()
方法)。我向 ChatGPT 询问了这个问题,它完全困惑了,反复讨论
operator ()
是否是创建可调用对象的有效方法,哈哈。

因此,如果它不是如何创建可调用对象,但它确实编译,那么它实际上在做什么?什么时候才能运行?

dart operator-overloading operators
1个回答
0
投票

在本例中,您声明了一个普通方法,该方法恰好是 named

operator
。您可以像任何其他命名方法一样调用它:

void main() {
  var x = MyOperatorClass();
  print(x.operator()); // Prints: 5
}

https://dart.dev/language/keywords,请注意

operator
2:

一起列出

带有上标2的单词是内置标识符。这些关键字在大多数地方都是有效的标识符,但它们不能用作类或类型名称,也不能用作导入前缀。

所以

operator
显然作为方法名称是合法的(尽管使用它是不明智的)。

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