flutter - 颤振((){})()中的多圆括号是什么意思?
问题描述
(() {
if (done && !operate) {
return x;
} else if (operate)
return y;
else {
return z;
}
})(),
(() {} )() 是什么意思,我应该什么时候使用它?
解决方案
这是分配给变量的函数:
var myFunc = () { ... };
你可以这样称呼它:
myFunc();
这是一个匿名函数:
() { ... }
可悲的是,它没有分配给变量并且没有名称。所以,这就是你如何调用这个函数:
(() { ... })() // Wrap the function in parenthesis and call it.
如何,我应该什么时候使用它?
如果你懒得做一个函数(或者不能决定一个好名字)并且你确定你只会使用它一次,你可以使用这个。
它可能看起来毫无用处,因为这里没有提供代码可重用性,但是在构建小部件时它会很有帮助。
考虑一个场景:
Widget1(
child: Widget2(
child: Widget3(
child:
假设,你想要一个 Widget3 的孩子,它依赖于一个可以有多个值的变量x 。
你可以这样做:
child: x == 0 ? WidgetA() : (x == 1? WidgetB() : (x == 3 ? WidgetC() : ...))
这很复杂。你可能不想这样做!
相反,您可能想要,
child: ((){
switch(x) {
case 0:
return WidgetA();
case 1:
return WidgetB();
case 2:
return WidgetC();
.....
}
})()
这看起来更干净。当然,如果你想在其他地方重用这个函数,这根本不是一个好的选择,但如果你确定这是唯一的地方,那么你可以像这样创建一个匿名函数并就地调用它。
推荐阅读
- javascript - 如何设置 https 代理
- ios - 从 php/mysql 向 iPhone 发送消息
- jquery - mCustomScroll - 在页面加载时滚动正文焦点
- python - 正在上传到谷歌驱动器的文件没有保留它的名称。[https://developers.google.com/drive/v3/web/simple-upload]
- asp.net - 将 nvarchar 值“p”转换为数据类型 int 时转换失败
- java - StringIndexOutOfBounds 从字符串设置 int 值时出现异常
- java - 初始化值并在输入文本时检测它
- c# - 如何将 Class 类型发送到另一个类并创建该类的实例?
- angular - 让 angular-oauth2-oidc 从其他选项卡检索访问令牌
- reactjs - Redux:道具未定义