본문 바로가기
Dart/Dart Programming language

[추가학습] Dart에서 람다 함수 사용법: 간결하고 강력한 익명 함수의 매력!

by Maccrey Coding 2024. 10. 18.
728x90
반응형

 

오늘은 Dart 프로그래밍 언어에서 람다 함수를 어떻게 사용하는지 알아보겠습니다.

람다 함수는 코드의 가독성을 높이고, 짧고 간결하게 표현할 수 있는 강력한 도구입니다.

초보자도 쉽게 이해할 수 있도록 기본 개념부터 다양한 예제까지 차근차근 설명해 드릴게요.

람다 함수란?

람다 함수는 익명 함수(이름이 없는 함수)의 한 종류로, 주로 한 줄의 코드로 작성됩니다.

Dart에서는 => 연산자를 사용하여 람다 함수를 표현합니다. 이 방법을 사용하면 복잡한 코드 대신 간단한 표현으로 기능을 구현할 수 있습니다.

람다 함수 문법

람다 함수의 기본 문법은 다음과 같습니다.

(매개변수1, 매개변수2, ...) => 표현식;
  • 매개변수: 람다 함수가 입력받을 값입니다. 여러 개의 매개변수를 사용할 수 있습니다.
  • =>: 표현식의 결과를 반환합니다.
  • 표현식: 함수가 수행할 작업입니다.

간단한 예제

이제 실제로 람다 함수를 만들어 볼까요?

void main() {
  // 두 숫자를 더하는 람다 함수
  var add = (int a, int b) => a + b;

  print(add(5, 3)); // 출력: 8
}

위의 예제에서 add는 두 개의 정수를 더하는 람다 함수입니다. 간단하게 => 뒤에 a + b라는 표현식만 작성하면 됩니다.

람다 함수를 리스트와 함께 사용하기

람다 함수는 리스트를 다룰 때 특히 유용합니다. 다음은 리스트의 각 요소를 출력하는 예제입니다.

void main() {
  List<String> fruits = ['사과', '바나나', '오렌지'];

  // 리스트의 모든 요소를 출력하는 람다 함수
  fruits.forEach((fruit) => print(fruit));
}

여기서 forEach 메소드는 리스트의 각 요소에 대해 람다 함수를 호출합니다.

fruit 매개변수는 리스트의 각 요소를 나타내며, print(fruit)을 통해 출력됩니다.

 

예제 1: 리스트 요소의 제곱하기

리스트의 각 요소를 제곱하는 람다 함수를 만들어 보자.

void main() {
  List<int> numbers = [1, 2, 3, 4, 5];

  // 각 요소를 제곱하는 람다 함수
  var squaredNumbers = numbers.map((number) => number * number);

  print(squaredNumbers.toList()); // 출력: [1, 4, 9, 16, 25]
}

설명: map 메소드는 리스트의 각 요소에 람다 함수를 적용하고, 새로운 리스트를 반환해. 여기서는 각 숫자를 제곱하고 있어.

예제 2: 조건에 맞는 요소 필터링

리스트에서 짝수만 필터링하는 예제다.

void main() {
  List<int> numbers = [1, 2, 3, 4, 5, 6];

  // 짝수만 필터링하는 람다 함수
  var evenNumbers = numbers.where((number) => number % 2 == 0);

  print(evenNumbers.toList()); // 출력: [2, 4, 6]
}

 

설명: where 메소드는 주어진 조건을 만족하는 요소만 선택하여 새로운 리스트를 생성해. 여기서는 짝수를 선택하고 있어.

예제 3: 리스트 요소의 합계 구하기

리스트의 모든 요소를 더하는 람다 함수를 만들어 보자.

void main() {
  List<int> numbers = [1, 2, 3, 4, 5];

  // 리스트의 모든 요소의 합을 구하는 람다 함수
  var sum = numbers.reduce((total, number) => total + number);

  print(sum); // 출력: 15
}

 

설명: reduce 메소드는 리스트의 모든 요소를 하나의 값으로 축약해. 여기서는 모든 숫자의 합을 구하고 있어.

예제 4: 문자열 리스트의 길이 계산

문자열 리스트의 각 요소의 길이를 구하는 예제다.

void main() {
  List<String> words = ['apple', 'banana', 'cherry'];

  // 각 문자열의 길이를 구하는 람다 함수
  var lengths = words.map((word) => word.length);

  print(lengths.toList()); // 출력: [5, 6, 6]
}

설명: 각 문자열에 대해 length 속성을 사용하여 문자열의 길이를 구하고 있어.

예제 5: 조건부 로직 사용하기

리스트의 각 요소에 대해 조건부 로직을 사용하는 예제다.

void main() {
  List<int> numbers = [1, 2, 3, 4, 5];

  // 각 숫자가 짝수인지 홀수인지 판별하는 람다 함수
  var parity = numbers.map((number) => number % 2 == 0 ? '짝수' : '홀수');

  print(parity.toList()); // 출력: [홀수, 짝수, 홀수, 짝수, 홀수]
}

설명: map 메소드 내에서 조건부 연산자를 사용하여 각 숫자가 짝수인지 홀수인지 판별하고 있어.

예제 6: 리스트 정렬

리스트의 요소를 정렬하는 예제다.

void main() {
  List<int> numbers = [5, 3, 1, 4, 2];

  // 리스트를 오름차순으로 정렬하는 람다 함수
  numbers.sort((a, b) => a.compareTo(b));

  print(numbers); // 출력: [1, 2, 3, 4, 5]
}

설명: sort 메소드는 주어진 비교 로직에 따라 리스트를 정렬해. 여기서는 compareTo 메소드를 사용하여 오름차순으로 정렬하고 있어.

예제 7: 리스트에서 특정 문자열 찾기

리스트에서 특정 문자열이 있는지 확인하는 예제다.

void main() {
  List<String> fruits = ['사과', '바나나', '체리'];

  // 리스트에 '바나나'가 있는지 확인하는 람다 함수
  var containsBanana = fruits.any((fruit) => fruit == '바나나');

  print(containsBanana); // 출력: true
}

설명: any 메소드는 리스트의 요소 중 하나라도 조건을 만족하는지 확인해. 여기서는 '바나나'가 있는지를 체크하고 있어.

람다 함수의 장점

  1. 가독성: 짧고 간결한 코드로 작성할 수 있어 이해하기 쉽습니다.
  2. 익명성: 이름이 필요 없으므로 일회성으로 사용할 때 적합합니다.
  3. 편리함: 다른 함수의 인자로 쉽게 전달할 수 있어 재사용성이 높습니다.

Dart의 람다 함수는 간단한 작업을 빠르게 처리할 수 있는 매우 유용한 도구입니다. 익명 함수의 강력함을 활용하여 더 깔끔하고 가독성 높은 코드를 작성해보세요!

 

공감과 댓글은 저에게 큰 힘이 됩니다.

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

 

728x90
반응형