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');
}
}
2 回答
胖箭头语法只是返回表达式的简写,类似于
(){ return expression; }
.根据docs .
从上面的代码中,您可以看到在使用回调函数时可以生成多行语句,然后返回一个值,而胖箭头只有一个没有返回关键字的表达式 .
考虑你的答案关于胖箭不支持dart中的多行语句 . 这是可以理解的,因为做
() => {somtheing}
意味着你正在返回一张 Map ,它会期望看到类似() => {'name':'John', 'age':25}
而不是() => { _myTxt = "Text Changed";_myTxt = "Never Mind"; }
的东西 .我发现那个意思完全一样 . 唯一的区别是,如果只有一个语句,您可以使用(您没有)胖箭头 . 以下是带有胖箭头的上述
RaisedButton
声明 . 注意我必须删除两个花括号和一个分号:如果你已经习惯了其他语言允许你在一个粗箭头之后放置多个语句,你会发现你不能用飞镖,如果你尝试,你会得到一个错误,如下所示:
this wont work