익명 함수
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)을 사용하여 출력 메시지를 위에 표시된 것과 정확히 일치하도록 형식화하세요.
치트 시트
익명 함수는 이름이 없는 함수로, 필요한 위치에서 바로 정의됩니다. 구문은 매개변수 목록 뒤에 함수 본문이 오는 형식을 사용합니다:
(parameter) {
// 함수 본문
}익명 함수는 forEach와 같은 리스트 메서드와 함께 사용할 때 특히 유용합니다:
List<String> fruits = ['apple', 'banana', 'orange'];
fruits.forEach((fruit) {
print(fruit);
});이 방식은 다른 곳에서 재사용되지 않는 간단한 일회성 작업을 위해 코드를 깔끔하고 집중력 있게 유지해 줍니다.
직접 해보기
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리스트 정렬리스트 섞기요약 - 리스트 정리 도구