익명 함수
Coddy Dart 여정의 로직 & 흐름 섹션에 포함된 레슨 — 65개 중 44번째.
지금까지 여러분은 calculateTotal 또는 printMessage와 같은 이름을 가진 함수를 만들어 왔습니다. 하지만 때로는 단 하나의 특정 작업을 위한 간단한 함수가 필요할 때가 있으며, 이름을 붙이는 것이 불필요하게 느껴질 수도 있습니다. 이럴 때 익명 함수가 유용합니다.
익명 함수는 이름이 없는 함수입니다. 필요한 곳에서 바로 정의하여 사용하므로, 짧고 일회성인 작업에 대해 코드를 더 간결하게 만들 수 있습니다. 구문은 간단합니다. 매개변수 목록을 작성한 다음 함수 본문을 작성하면 됩니다:
(parameter) {
// 함수 본문
}익명 함수는 리스트 메서드와 함께 사용할 때 특히 유용합니다. 예를 들어, 리스트의 각 항목을 출력하기 위해 별도의 명명된 함수를 만드는 대신, forEach 메서드와 함께 익명 함수를 직접 사용할 수 있습니다:
List<String> fruits = ['apple', 'banana', 'orange'];
fruits.forEach((fruit) {
print(fruit);
});이 접근 방식은 특히 함수 로직이 단순하고 프로그램의 다른 곳에서 재사용되지 않을 때, 코드를 깔끔하고 집중력 있게 유지해 줍니다.
챌린지
쉬움익명 함수를 사용하여 직원 이름 목록을 처리하는 프로그램을 작성하세요. 이 프로그램은 forEach 메서드와 익명 함수를 함께 사용하여 각 리스트 요소에 대해 서로 다른 작업을 수행하는 방법을 보여줍니다.
- 쉼표로 구분된 직원 이름이 포함된 문자열 입력을 읽습니다 (예:
"Alice,Bob,Charlie,Diana"). split()메서드를 사용하여 입력 문자열을 개별 이름 리스트로 분할합니다.- 익명 함수와 함께
forEach메서드를 사용하여 각 직원 이름과 환영 메시지를 출력합니다. - 또 다른 익명 함수와 함께
forEach메서드를 사용하여 각 직원 이름을 대문자로 출력합니다. - 세 번째 익명 함수와 함께
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. 이름의 길이 출력
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
로직 & 흐름의 모든 레슨
1고급 리스트 조작
리스트 속성: first 및 last리스트 상태: isEmpty 및 isNotEmpty리스트 뒤집기리스트에 추가: insert리스트 요소 제거: removeWhere리스트에서 찾기: indexOf리스트 정렬리스트 섞기요약 - 리스트 정리 도구