gpt4 book ai didi

dart - 没有定义方法的 forEach() 迭代

转载 作者:行者123 更新时间:2023-12-01 12:56:50 28 4
gpt4 key购买 nike

很抱歉标题令人困惑,但我真的不知道如何总结这个问题。

Dart 中继承 Iterable 的类有一个 forEach() 方法。虽然它们很好且易于使用,但我经常希望对值进行少量操作,而无需为其定义方法,以提高代码的可读性。例如,像 PHP 的 foreach 语法。所以而不是写:

void main() {  
List<int> l = [1, 2, 3];
l.forEach(doSomethingWithValue);
}

void doSomethingWithValue(int val) {
String str = getStringFor(val);
print(str);
}

我想写这样的东西:

l.forEach((val) => {
String str = getStringFor(val);
print(str);
});

当然,这段代码不起作用,但我希望它展示了我想要做的事情。有什么办法可以做到这一点吗?

最佳答案

你实际上非常接近;你只需要摆脱 => 。这是单表达式函数体的语法。要在主体中定义具有多个语句的函数,将其分组在方括号内,方括号中的主体遵循带括号的参数列表,中间没有 =>:

l.forEach((val) {
String str = getStringFor(val);
print(str);
});

请注意,此概念适用于命名函数以及示例中的匿名函数。

void doSomethingWithValue(int val) => print(val);

是相同的

void doSomethingWithValue(int val) {
print(val);
}

还要注意 => 形式的函数体返回其表达式的值:

int tripleValue(int val) => val * 3;

是相同的

int tripleValue(int val) {
return val * 3;
}

关于dart - 没有定义方法的 forEach() 迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16290402/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com