Dart

Dart, 이름없는 함수

수알치 2021. 6. 15. 01:01

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 );

 

<이상>

 

반응형