본문 바로가기
Flutter

[플러터 07] Dart 언어 함수

by JINJINC 2025. 1. 3.
728x90
반응형

익명 함수 

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;

728x90
반응형

'Flutter' 카테고리의 다른 글

[플러터 10] 화살표 함수  (0) 2025.01.03
[플러터 06] Dart 연산자  (0) 2025.01.02
[플러터 05] Dart언어의 기초1  (0) 2025.01.02

댓글