목차
1. start (p60~68)
2. function (p68~75)
3. class (p75~84)
4. collection (p84~87)
5. funtion_programming (p87~ 94)
우선 시작에 앞서 dart code를 확인해보고 싶다면 여기를 클릭하세요!
void greeting(String text){ print(text); } // 다른 함수의 인수로 함수 자체를 전달하거나 함수를 반환받을 수도 있습니다. void something(Function(int i) f){ f(10); } void main(){ var f = greeting; // 함수를 다른 변수에 대입할 수 있음 f('hello'); something((value){ print(value); }); }
- 이와같이 함수를 매개변수로 전달하기, 수정하기, 변수에 대입하기가 가능한 객체를 일급 객체(first-class object)라고 합니다.
- Ex
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 }
final items = [1, 2, 3, 4, 5]; void main(){ for( var i = 0; i < items.length; i++ ){ print(items[i]); // 1, 2, 3, 4, 5 } }
items.forEach(print); /// 1,2,3,4,5 // 익명 함수로 items.forEach((e){ print(e); }); // 람다식으로 items.forEach((e) => print(e)); **/ /// 해석 : e는 items의 각 요소가 내부적으로 반복하면서 하나씩 들어올 인수입니다. 이것을 print()에 전달한다는 의미입니다. /// 다음 코드도 같은 결과를 냅니다. // items.forEach(print);
final items = [1, 2, 3, 4, 5]; main(){ for( var i = 0; i<items.length; i++){ if( items[i]%2 == 0){ print(items[i]); // 2, 4 } } } // where()함수 활용 main(){ items.where((e) => e%2 == 0).forEach(print); // 2, 4 }
main(){ 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); }
final items = [1, 2, 3, 4, 5]; main(){ final result = []; items.forEach((e){ if(e%2 == 0){ result.add(e); } }); // tolist로? // final result = items.where((e) => e%2==0).toList(); }
- toList()는 where(), map()과 같이 Iterable 인터페이스를 반환하는 메서드에서 사용할 수 있습니다.
final items = [1, 2, 2, 3, 3, 4, 5]; final result = items.where((e) => e%2 == 0).toLsit(); // 2, 2, 4 final result = items.where((e) => e%2 == 0).toSet().toList(); // 2, 2, 4
print(items.any((e) => e % 2 == 0)); // true
import 'dart:math'; final items = [1, 2, 3, 4, 5]; main(){ print(items.reduce((e, v) => max(e, v))); // 5 final result = items.reduce(max); // 5 }