在Flutter/Dart中,示例有时显示胖箭,有时不显示.以下是示例:
RaisedButton(
onPressed: () {
setState(() {
_myTxt = "Text Changed";
});
},
Run Code Online (Sandbox Code Playgroud)
在其他地方你看到:
void main() => runApp(MyApp());
Run Code Online (Sandbox Code Playgroud)
non*_*hto 15
胖箭头语法只是返回表达式的简写,类似于(){ return expression; }.
根据文件.
注意:箭头(=>)和分号(;)之间只能出现表达式而非语句.例如,您不能在其中放置if语句,但可以使用条件表达式
void main(){
final cls = TestClass();
cls.displayAnInt((){
//you can create statements here and then return a value
int num1 = 55;
int num2 = 1;
int sum = num1 + num2;
return sum;
});
cls.displayAnInt(() => 55 + 1); // simply return an int expression
}
class TestClass{
displayAnInt(makeIntFunc){
int intValue = makeIntFunc();
print('The int value is $intValue');
}
}
Run Code Online (Sandbox Code Playgroud)
从上面的代码中,您可以看到在使用回调函数时可以生成多行语句,然后返回一个值,而胖箭头只有一个没有返回关键字的表达式.
考虑你的答案关于胖箭不支持dart中的多行语句.这是可以理解的,因为这样做() => {somtheing}意味着你要返回一张地图,它会期望看到类似的东西,() => {'name':'John', 'age':25}而不是() => { _myTxt = "Text Changed";_myTxt = "Never Mind"; }.
=>用于返回匿名函数的值。
() {}允许您执行多个语句。
尽管
() => {myVar}或() => myVar;允许一个单独的语句。
() => myVar;返回一条语句时简短而简单。
同样的逻辑也适用于创建非匿名函数。
单语句函数
func() => y = x + x;
多语句函数
func () {
x = x + x;
print(x + ' value of x');
};
Run Code Online (Sandbox Code Playgroud)
我发现这意味着完全相同的事情。唯一的区别是,如果只有一个语句,您可以(不必)使用粗箭头。以下是RaisedButton带有粗箭头的上述声明。请注意,我必须删除两个花括号和一个分号:
RaisedButton(
onPressed: () {
setState(() =>
_myTxt = "Text Changed"
);
},
Run Code Online (Sandbox Code Playgroud)
如果您习惯于允许您在粗箭头后放置多个语句的其他语言,您会发现在 dart 中无法使用,如果您尝试使用,则会出现如下错误:
这行不通
RaisedButton(
onPressed: () {
setState(() => {
_myTxt = "Text Changed";
_myTxt = "Never Mind";
});
},
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3313 次 |
| 最近记录: |