Menu
Coddy logo textTech

익명 함수

Coddy Dart 여정의 로직 & 흐름 섹션에 포함된 레슨 — 65개 중 44번째.

지금까지 여러분은 calculateTotal 또는 printMessage와 같은 이름을 가진 함수를 만들어 왔습니다. 하지만 때로는 단 하나의 특정 작업을 위한 간단한 함수가 필요할 때가 있으며, 이름을 붙이는 것이 불필요하게 느껴질 수도 있습니다. 이럴 때 익명 함수가 유용합니다.

익명 함수는 이름이 없는 함수입니다. 필요한 곳에서 바로 정의하여 사용하므로, 짧고 일회성인 작업에 대해 코드를 더 간결하게 만들 수 있습니다. 구문은 간단합니다. 매개변수 목록을 작성한 다음 함수 본문을 작성하면 됩니다:

(parameter) {
  // 함수 본문
}

익명 함수는 리스트 메서드와 함께 사용할 때 특히 유용합니다. 예를 들어, 리스트의 각 항목을 출력하기 위해 별도의 명명된 함수를 만드는 대신, forEach 메서드와 함께 익명 함수를 직접 사용할 수 있습니다:

List<String> fruits = ['apple', 'banana', 'orange'];
fruits.forEach((fruit) {
  print(fruit);
});

이 접근 방식은 특히 함수 로직이 단순하고 프로그램의 다른 곳에서 재사용되지 않을 때, 코드를 깔끔하고 집중력 있게 유지해 줍니다.

challenge icon

챌린지

쉬움

익명 함수를 사용하여 직원 이름 목록을 처리하는 프로그램을 작성하세요. 이 프로그램은 forEach 메서드와 익명 함수를 함께 사용하여 각 리스트 요소에 대해 서로 다른 작업을 수행하는 방법을 보여줍니다.

  1. 쉼표로 구분된 직원 이름이 포함된 문자열 입력을 읽습니다 (예: "Alice,Bob,Charlie,Diana").
  2. split() 메서드를 사용하여 입력 문자열을 개별 이름 리스트로 분할합니다.
  3. 익명 함수와 함께 forEach 메서드를 사용하여 각 직원 이름과 환영 메시지를 출력합니다.
  4. 또 다른 익명 함수와 함께 forEach 메서드를 사용하여 각 직원 이름을 대문자로 출력합니다.
  5. 세 번째 익명 함수와 함께 forEach 메서드를 사용하여 각 직원 이름과 해당 이름의 글자 수를 출력합니다.

예를 들어, 입력이 "Alice,Bob,Charlie"인 경우 프로그램은 다음과 같이 출력해야 합니다:

Processing employee list: Alice,Bob,Charlie
===========================================
Welcome Messages:
Welcome to the team, Alice!
Welcome to the team, Bob!
Welcome to the team, Charlie!
===========================================
Names in Uppercase:
ALICE
BOB
CHARLIE
===========================================
Name Lengths:
Alice has 5 characters
Bob has 3 characters
Charlie has 7 characters

입력이 "John,Sarah"인 경우 프로그램은 다음과 같이 출력해야 합니다:

Processing employee list: John,Sarah
===========================================
Welcome Messages:
Welcome to the team, John!
Welcome to the team, Sarah!
===========================================
Names in Uppercase:
JOHN
SARAH
===========================================
Name Lengths:
John has 4 characters
Sarah has 5 characters

프로그램은 각각 고유한 익명 함수를 가진 세 개의 별도 forEach 메서드 호출을 사용해야 합니다. 익명 함수는 이름을 지정하지 않고 인라인으로 정의해야 합니다. 각 익명 함수는 현재 직원 이름을 나타내는 단일 매개변수를 받아 지정된 작업을 수행해야 합니다. 문자열 보간(string interpolation)을 사용하여 출력 메시지를 위에 표시된 것과 정확히 일치하도록 형식화하세요.

직접 해보기

import 'dart:io';

void main() {
  // 직원 이름이 포함된 입력 문자열을 읽습니다.
  String? input = stdin.readLineSync();
  
  // 입력을 이름 리스트로 분할합니다.
  List<String> employeeNames = input!.split(',');
  
  // 초기 처리 메시지를 출력합니다.
  print('Processing employee list: $input');
  print('===========================================');
  
  // TODO: 아래에 코드를 작성하세요.
  // 익명 함수와 함께 forEach를 사용하여 다음을 수행하세요:
  // 1. 환영 메시지 출력
  // 2. 이름을 대문자로 출력  
  // 3. 이름의 길이 출력
  
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

로직 & 흐름의 모든 레슨