반응형

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

 

<이상>

 

반응형

'Dart' 카테고리의 다른 글

Dart, 함수 비교 테스트  (0) 2021.06.15
Dart, 접근 범위와 클로저(closure)  (0) 2021.06.15
Dart, 함수  (0) 2021.06.14
Dart, 맵(사전) 자료형 Map  (0) 2021.06.14
Dart 집합 자료형 Set  (0) 2021.06.14

+ Recent posts