forEach() iteration without defining method
dart
Solution
You're actually extremely close; you just need to get rid of the `=>`. That's the syntax for a single-expression function body. To define a function with multiple statements in the body, grouped within brackets, the bracketed body follows the parenthesized parameter list without `=>` in between:
l.forEach((val) {
String str = getStringFor(val);
print(str);
});
Note that this concept applies to named functions as well as to anonymous functions as in your example.
void doSomethingWithValue(int val) => print(val);
is the same as
void doSomethingWithValue(int val) {
print(val);
}
Also note that a function body of the `=>` form returns the value of its expression:
int tripleValue(int val) => val * 3;
is the same as
int tripleValue(int val) {
return val * 3;
}
Problem
Sorry about the confusing title, but i don't really know how to summarize this question. Classes inheriting `Iterable` in Dart have a `forEach()` method. While they are nice and easy to use, I'm often in the situation where I'd like to do a small number of operations with the value, without the need to define a method for it, to improve the code's readability. Like PHP's `foreach` syntax, for example. So instead of writing: ``` void main() { List<int> l = [1, 2, 3]; l.forEach(doSomethingWithValue); } void doSomethingWithValue(int val) { String str = getStringFor(val); print(str); } ``` I'd like to write something like this: ``` l.forEach((val) => { String str = getStringFor(val); print(str); }); ``` Of course, this code doesn't work, but I hope it demonstrates what I want to do. Is there any way to accomplish this?