μΌκΈ κ°μ²΄
π¬ ν¨μλ₯Ό ννν μ μλ κ²λ€μ λͺ¨λ κ°μΌλ‘ μ·¨κΈν μ μμΌλ―λ‘, λ€λ₯Έ λ³μμ ν¨μλ₯Ό λμ ν μ μλ€.
void greeting(String text) {
print(text);
}
void main() {
var f = greeting; // ν¨μλ₯Ό λ€λ₯Έ λ³μμ λμ
ν μ μμ
f('hello');
}
π¬ λ€λ₯Έ ν¨μμ μΈμλ‘ ν¨μ μ체λ₯Ό μ λ¬νκ±°λ ν¨μλ₯Ό λ°νλ°μ μλ μλ€.
void something(Function(int i) f) {
f(10);
}
void main() {
something((value) {
print(value);
});
}
β« Functionμ ν¨μλ₯Ό 맀κ°λ³μλ‘ μ λ¬νκ³ μ ν λ μ¬μ©νλ νμ μ΄λ€.
β« f() ν¨μλ μ΅λͺ ν¨μμ΄λ©°, μμ μμλ printλ₯Ό μννκ³ 10μ μΆλ ₯νλ€.
β« μ΄μ κ°μ΄ ν¨μλ₯Ό 맀κ°λ³μλ‘ μ λ¬νκΈ°, μμ νκΈ°, λ³μμ λμ νκΈ°κ° κ°λ₯ν κ°μ²΄λ₯Ό μΌκΈ κ°μ²΄λΌκ³ νλ€.
void something(Function(int i) f) {
f(10);
}
void myPrintFunction(int i) {
print('λ΄κ° λ§λ ν¨μμμ μΆλ ₯ν $i');
}
void main() {
something(myPrintFunction); // λ΄κ° λ§λ ν¨μμμ μΆλ ₯ν 10
something((i) => myPrintFunction(i)); // λ΄κ° λ§λ ν¨μμμ μΆλ ₯ν 10
something((i) => print(i)); // 10
something(print); // 10
}
forEach() ν¨μ
π¬ forEach() ν¨μλ (E element) { } ννμ ν¨μλ₯Ό μΈμλ‘ λ°λλ€.
final items = [1, 2, 3, 4, 5];
items.forEach(print); // 1, 2, 3, 4, 5
items.forEach((e) { // 1, 2, 3, 4, 5
print(e);
});
items.forEach((e) => print(e)); // 1, 2, 3, 4, 5
where
π¬ 쑰건μ νν°λ§ν λ μ¬μ©νλ ν¨μ
final items = [1, 2, 3, 4, 5];
for (var i = 0; i < items.length; i++) {
if (items[i] % 2 == 0) {
print(items[i]); // 2, 4
}
}
// where ν¨μλ₯Ό μ¬μ©νμ¬ μμ±
items.where((e) => e % 2 == 0).forEach(print); // 2, 4
β« ν¨μν νλ‘κ·Έλλ°μ μ§μνλ ν¨μλ€μ κ²°κ³Όλ₯Ό λ°λ³΅ κ°λ₯ν νμ μΌλ‘ λ°ννλ©° λ©μλ 체μΈ(.)μΌλ‘ μ°κ²°νμ¬ μ¬μ©ν μ μλ€.
map
π¬ λ°λ³΅λλ κ°μ λ€λ₯Έ ννλ‘ λ³ννλ λ°©λ²μ μ 곡νλ ν¨μ
final items = [1, 2, 3, 4, 5];
for (var i = 0; i < items.length; i++) {
if (items[i] % 2 == 0) {
print('μ«μ ${items[i]}'); // μ«μ 2, μ«μ 4
}
}
// map() μ¬μ©νμ¬ κ΅¬ν
items.where((e) => e % 2 == 0).map((e) => 'μ«μ $e').forEach(print);
toList
π¬ κ²°κ³Όλ₯Ό 리μ€νΈλ‘ λ³νν΄μ£Όλ ν¨μ
final items = [1, 2, 3, 4, 5];
final result = [];
items.forEach((e) {
if (e % 2 == 0) {
result.add(e);
}
});
// toList() μ¬μ©
final result = items.where((e) => e % 2 == 0).toList();
toSet
π¬ 리μ€νΈμ μ€λ³΅λ λ°μ΄ν°κ° μμ κ²½μ° μ€λ³΅μ μ κ±°ν 리μ€νΈλ₯Ό μ»κ³ μΆμ λ
final items = [1, 2, 2, 3, 3, 4, 5];
var result = [];
var temp = <int>{};
for (var i = 0; i < items.length; i++) {
if (items[i] % 2 == 0) {
temp.add(items[i]);
}
}
result = temp.toList();
print(result); // 2, 4
final result = items.where((e) => e % 2 == 0).toSet().toList(); // 2, 4
any
π¬ 리μ€νΈμ νΉμ 쑰건μ μΆ©μ‘±νλ μμκ° μλμ§ μλμ§ κ²μ¬
π¬ 리μ€νΈμ μ§μκ° νλλΌλ μλμ§ κ²μ¬νμ¬ κ²°κ³Όλ₯Ό μΆλ ₯νλ λ‘μ§
final items = [1, 2, 2, 3, 3, 4, 5];
var result = false;
for (var i = 0; i < items.length; i++) {
if (items[i] % 2 == 0) {
result = true;
break;
}
}
print(result); // true
// any() μ¬μ©
print(items.any((e) => e % 2 == 0)); // true
reduce
π¬ λ°λ³΅ μμλ₯Ό μ€μ¬κ°λ©΄μ κ²°κ³Όλ₯Ό λ§λ€ λ μ¬μ©
π¬ 리μ€νΈμμ μ΅λκ°μ ꡬν λ μμ°¨μ μΌλ‘ λΉκ΅νλ λ‘μ§
import 'dart:math';
final items = [1, 2, 3, 4, 5];
var maxResult = items[0];
for (var i = 1; i < items.length; i++) {
maxResult = max(items[i], maxResult);
}
print(maxResult); // 5
print(items.reduce((e, v) => max(e, v))); // 5
print(items.reduce(max)); // 5
π¬ reduce() ν¨μλ νμ λ μΈμλ₯Ό λ°μμ μΈμμ κ°μ νμ μ λ°ννλ ν¨μλ₯Ό νλΌλ―Έν°λ‘ ꡬνν΄μΌ νλ€.
π¬ max ν¨μλ μ μμΈ λ μλ₯Ό λ°μμ ν° μλ₯Ό λ°ννλ―λ‘ reduce() ν¨μμ νλΌλ―Έν°μ μ ν©νλ€.
'Dart' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[ Flutter ] Null Safety (0) | 2022.01.01 |
---|---|
[ Dart ] κΈ°ν μ μ©ν κΈ°λ² (0) | 2021.12.21 |
[ Dart ] 컬λ μ (0) | 2021.12.21 |
[ Dart ] κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° (0) | 2021.12.21 |
[ Dart ] λΆκΈ°μ λ°λ³΅ (0) | 2021.12.21 |