对于令人困惑的标题感到抱歉,但我真的不知道如何总结这个问题.
Iterable在Dart中继承的类有一个forEach()方法.虽然它们很好并且易于使用,但我经常处于这样的情况:我希望使用该值进行少量操作,而无需为其定义方法,以提高代码的可读性.foreach例如,像PHP的语法一样.所以不要写:
void main() {
List<int> l = [1, 2, 3];
l.forEach(doSomethingWithValue);
}
void doSomethingWithValue(int val) {
String str = getStringFor(val);
print(str);
}
Run Code Online (Sandbox Code Playgroud)
我想写这样的东西:
l.forEach((val) => {
String str = getStringFor(val);
print(str);
});
Run Code Online (Sandbox Code Playgroud)
当然,这段代码不起作用,但我希望它能说明我想做的事情.有没有办法实现这个目标?
Dar*_*tle 11
你实际上非常接近; 你只需要摆脱它=>.这是单表达式函数体的语法.要定义一个在主体中具有多个语句的函数,在括号内分组,括号内的主体遵循带括号的参数列表,而不=>在以下两者之间:
l.forEach((val) {
String str = getStringFor(val);
print(str);
});
Run Code Online (Sandbox Code Playgroud)
请注意,此概念适用于命名函数以及示例中的匿名函数.
void doSomethingWithValue(int val) => print(val);
Run Code Online (Sandbox Code Playgroud)
是相同的
void doSomethingWithValue(int val) {
print(val);
}
Run Code Online (Sandbox Code Playgroud)
另请注意,=>表单的函数体返回其表达式的值:
int tripleValue(int val) => val * 3;
Run Code Online (Sandbox Code Playgroud)
是相同的
int tripleValue(int val) {
return val * 3;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1069 次 |
| 最近记录: |