🐰
【Dart】関数を引数として渡す基本的な使い方から見るforEach文
関数を変数として引数で渡す匿名関数(Functionクラス)の基本的な使い方から見ると、
forEach文が理解しやすかったです。
(関数を別途自分で用意することを省略できる。)
【Dart】制御フロー文
forEach文の理解
void forEach(void f(E element)) {
for (E element in this) f(element);
}
基本例①
- testOutput関数
- 「callback」として、関数を引数として受け取る
- StringのListから一つずつ取り出し、「callback」の引数として実行
void testOutput(void Function(String) callback) {
final list = ['A', 'B', 'C'];
for (final item in list) {
callback(item);
}
}
void main() {
testOutput((String s) => print(s));
}
実行結果
A
B
C
基本例②
- 基本例①からStringのリストを外に出した場合
void testOutput(List<String> list, void Function(String) callback) {
for (final item in list) {
callback(item);
}
}
void main() {
final list = ['A', 'B', 'C'];
testOutput(list, (String s) => print(s));
}
実行結果
A
B
C
forEach利用
- forEach文を実行
- Listの中身を一つ一つ引数とした関数を反復実行
void main() {
final list = ['A', 'B', 'C'];
list.forEach((String s) => print(s));
}
実行結果
A
B
C
- 備考①
- 関数の内容少し修正し、実行
void main() {
final list = ['A', 'B', 'C'];
list.forEach((String s) => print(s.toLowerCase()));
}
実行結果
a
b
c
- 備考②
- 複数行の関数を実行
void main() {
final list = ['A', 'B', 'C'];
list.forEach((String s) {
print('TEST');
print(s);
});
}
実行結果
TEST
A
TEST
B
TEST
C
- 備考③
- forEachを利用するListに合った関数を渡して実行
- この場合は、Stringを引数とするvoid関数
- forEachを利用するListに合った関数を渡して実行
void testOutputString(String s) {
print(s);
}
void main() {
final list = ['A', 'B', 'C'];
list.forEach(testOutputString);
}
実行結果
A
B
C
- 備考④
- mapでも同様
void main() {
final map = {'A': 100, 'B': 200, 'C': 100};
map.forEach((String key, int value) {
print('$key, $value');
});
}
実行結果
A, 100
B, 200
C, 100
Discussion