Dart 中神秘的匿名函数

Mysterious anonymous function in Dart

我知道 () {} 匿名函数的用法,但是 () {}() 是什么意思? 我在这样的文本小部件中使用它:

new Text(
  () {
    return "hello";
  }(),
),

很好用,但为什么我需要在匿名函数后面添加()

如果没有第二组括号,您只是在声明一个匿名函数,没有别的。因此,如果没有第二组,您将向 Text 小部件传递函数 reference

现在,当您添加第二组括号时,您实际上是在调用您定义的函数。

如果换个角度看,可能会更清楚。如果你给那个匿名函数一个名字,你会得到相同的结果。

Function test = () {
  return "hello";
};
  
print(test());

等同于

print(() {
    return "hello";
  }());