익명 함수
1단계 - 이름 없는 함수( 선언하더라도 외부에서 사용할 방법이 없다.)
변수에 할당하지 않고 바로 익명 함수를 호출하는 것은 dart 에서 불가능하다.
(int number) {
return number * number;
};
2.단계 - 함수를 변수에 담을 수 있다.
Dart 함수에 타입은 Function이다.
Function(int) square = (int number) {
return number * number;
};
3단계 function대신 var에 담을 수 있음
var sub = (int number) {
return number * number;
};
Function(int, int) sub2 = (int number1, int number2) {
return number1 - number2;
};
4단계 - dart 에서는 매개변수 데이터 타입도 생략이 가능하다.
var add = (number1, number2) {
return number1 + number2;
};
익명 함수 (Anonymous Function) 문제
문제 1: 기본 익명 함수
다음 코드에서 빈칸에 들어갈 알맞은 코드를 작성하여 sum 변수에 두 숫자의 합을 계산하는 익명 함수를 할당하세요.
void main() {
// 빈칸을 채워 익명 함수를 작성하세요.
var sum = ___________;
print(sum(5, 3)); // 출력: 8
}
var sum = (int a, int b) => a + b;
문제 2: List의 요소 처리
다음 리스트의 모든 숫자를 2배로 만든 결과를 출력하는 익명 함수를 작성하세요.
forEach 메서드를 사용하여 결과를 출력하도록 코드를 완성하세요.
void main() {
List<int> numbers = [1, 2, 3, 4, 5];
// 익명 함수를 사용하여 각 숫자를 2배로 만들어 출력하세요.
numbers.forEach(___________);
// 출력: 2, 4, 6, 8, 10
}
numbers.forEach((number) { print(number * 2); });
문제 3: 조건에 맞는 값 필터링
다음 코드에서 익명 함수를 작성하여 리스트에서 짝수만 필터링한 결과를 evenNumbers에 저장하세요.
void main() {
List<int> numbers = [1, 2, 3, 4, 5, 6];
// 조건에 맞는 값을 필터링하는 익명 함수를 작성하세요.
List<int> evenNumbers = numbers.where(__________).toList();
print(evenNumbers); // 출력: [2, 4, 6]
}
List<int> evenNumbers = numbers.where((number) => number % 2 == 0).toList();
문제 4: Dart의 Map 메서드와 익명 함수
다음 코드에서 익명 함수를 작성하여 리스트의 모든 값을 제곱한 새 리스트를 반환하세요.
void main() {
List<int> numbers = [1, 2, 3, 4, 5];
// 익명 함수를 작성하여 값을 변환하세요.
List<int> squaredNumbers = numbers.map(__________).toList();
print(squaredNumbers); // 출력: [1, 4, 9, 16, 25]
}
List<int> squaredNumbers = numbers.map((number) => number * number).toList();
문제 5: 두 리스트의 대응 요소 합
다음 코드에서 두 리스트의 동일한 인덱스 요소를 더한 결과를 계산하는 익명 함수를 작성하세요.
void main() {
List<int> listA = [1, 2, 3];
List<int> listB = [4, 5, 6];
// 익명 함수를 사용하여 두 리스트의 요소를 더하세요.
List<int> sumList = List.generate(listA.length, (index) => __________);
print(sumList); // 출력: [5, 7, 9]
}
List<int> sumList = List.generate(listA.length, (index) => listA[index] + listB[index]);
문제 6: 사용자 정의 계산기
사용자가 입력한 두 숫자와 연산자(+, -, *, /)에 따라 계산 결과를 반환하는 익명 함수를 작성하세요.
void main() {
var calculator = (int a, int b, String operator) {
// 익명 함수 내부를 구현하세요.
__________
};
print(calculator(10, 5, '+')); // 출력: 15
print(calculator(10, 5, '-')); // 출력: 5
print(calculator(10, 5, '*')); // 출력: 50
print(calculator(10, 5, '/')); // 출력: 2
}
var calculator = (int a, int b, String operator) { if (operator == '+') return a + b; if (operator == '-') return a - b; if (operator == '*') return a * b; if (operator == '/') return a ~/ b; // 정수 나눗셈 return null; // 잘못된 연산자 처리 };
문제 7: 클로저(Closure)
다음 코드에서 makeMultiplier 함수를 작성하여, 주어진 숫자를 곱해주는 익명 함수를 반환하세요.
void main() {
Function multiplier = makeMultiplier(3);
print(multiplier(4)); // 출력: 12
print(multiplier(5)); // 출력: 15
}
Function makeMultiplier(int factor) {
// 익명 함수를 반환하는 클로저를 작성하세요.
return ___________;
}
return (int number) => number * factor;
'Flutter' 카테고리의 다른 글
[플러터 10] 화살표 함수 (0) | 2025.01.03 |
---|---|
[플러터 06] Dart 연산자 (0) | 2025.01.02 |
[플러터 05] Dart언어의 기초1 (0) | 2025.01.02 |
댓글