메뉴 닫기

Dart – 람다식과 익명함수의 여러가지 예제

Dart 언어에서 함수형 프로그래밍(Functional Programming)을 하기 위한 람다식(Lambda expression) & 익명함수(Anonymous function)을 소개합니다. 람다식을 잘 사용하면 작고 간단한 문제들을 쉽게 해결하면서 깔끔하고 매끄러운 코드를 작성할 수 있습니다.


람다식 & 익명함수

람다식(Lambda expression) 규칙은 아래와 같이 간단합니다.

(매개변수) => 동작 or 리턴값

람다식 중간에 화살표(=>)가 들어가서 화살표 함수(Arrow function)으로도 불립니다.

람다식은 아래와 같이 익명함수(Anonymous function / nameless function)로도 대체될 수 있습니다.

(매개변수) {동작 or 리턴값;}

익명함수는 말 그대로 함수이기 때문에 이름만 없을 뿐, 일반적인 함수 문법을 그대로 따라갑니다. 함수 내용은 대괄호로 감싸주어야 하고, 값을 반환할 때는 반드시 return 키워드를 붙여주어야 합니다.


예제 및 실행 결과

람다식과 익명함수를 사용한 기본 예제입니다. 내용이 간단하여 설명은 생략합니다.

int test() => 123;
int sum(int v1, int v2) => v1 + v2;
void printMessage(String str) => print(str);
String checkInputID(String str) => str.isEmpty ? "ID를 입력하세요." : "ID는 $str 입니다.";

Function func_test = (){return 123;};
Function func_sum = (int v1, int v2){return v1+v2;};
Function func_printMessage = (String str){print(str);};
Function func_checkInputID = (String str){ return str.isEmpty ? "ID를 입력하세요." : "ID는 $str 입니다.";};

void main()
{
  // lambda의 다양한 예제
  print(test());
  print(func_test());

  print(sum(3, 5));
  print(func_sum(3, 5));
  
  printMessage("Hello Dart!");
  func_printMessage("Hello Dart!");
  
  print(checkInputID(""));
  print(func_checkInputID(""));
}


List에서 람다식과 익명함수를 사용한 예제코드입니다.

void main()
{
  // Correction - List
  List<int> list = [1, 2, 3, 4, 5, 6];
  
  // List 출력
  list.forEach((i) => print(i));
  // list.forEach((i){print(i);}); // 익명함수 ver. 결과 동일
  
  // List - map (값 변형)
  var list2 = list.map((i) => i*2);
  //var list2 = list.map((i){return i*2;}); // 익명함수 ver. 결과 동일
  print(list2);
  
  // List - where (필터링)
  var list3 = list.where((i) => i % 2 == 0);
  //var list3 = list.where((i){ return i % 2 == 0;}); // 익명함수 ver. 결과 동일
  print(list3);
  
  // List - fold
  //int val1 = list.fold(10, (prev, i) => prev + i);
  int val1 = list.fold(10, (prev, i){return prev + i;}); // 익명함수 ver. 결과 동일
  print(val1);
  
  // List - reduce
  //int val2 = list.reduce((prev, i) => prev + i);
  int val2 = list.reduce((prev, i){ return prev + i;}); // 익명함수 ver. 결과 동일
  print(val2);
}


답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다