Dart, 이름없는 함수
Dart, 이름없는 함수
글. 수알치 오상문
대부분의 함수는 main () 또는 printElement ()처럼 이름이 있습니다. 그런데 이름없는(익명 함수 또는 람다 또는 클로저) 함수를 만들 수 있습니다. 예를 들어 컬렉션에서 추가/제거 할 수 있도록 익명 함수를 할당할 수 있습니다.
익명 함수는 이름이 지정된 함수와 같지만 함수 이름이 없습니다. 쉼표로 구분 된 0개 이상의 매개 변수와 괄호로 만듭니다.
([[자료형] 매개변수1[, …]]) {
// 몸통 코드;
};
다음 예제는 형식이 지정되지 않은 매개변수 item을 사용한 익명 함수((item) { print('${list.indexOf(item)}: $item'); })를 정의합니다. 목록의 각 항목에 대해 호출되는 함수는 지정된 인덱스 값을 포함하는 문자열을 화면에 출력합니다.
const list = ['apples', 'bananas', 'oranges'];
list.forEach( (item) { print('${list.indexOf(item)}: $item'); } );
[실행결과]
0: apples
1: bananas
2: oranges
함수에 단일 표현식 또는 return 문만 포함된 경우에는 화살표 표기법(==>)으로 단축할 수 있습니다.
list.forEach( (item) => print('${list.indexOf(item)}: $item'));
참고로 예제의 이름없는 함수는 다음처럼 이름(doPrint)을 가진 함수로 작성할 수도 있습니다.
void doPrint(dynamic item) {
print('${list.indexOf(item)}: $item');
}
list.forEach( doPrint );
<이상>