본문 바로가기
Flutter

[플러터 10] 화살표 함수

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

화살표 함수(arrow function)

Dart에서의 화살표 함수(arrow function)는 함수를 간결하게 정의하고 사용할 수 있는 특별한 문법입니다. 다른 프로그래밍 언어에서는 람다 함수 또는 람다 표현식이라 부릅니다. 기존 함수 정의와 비교하면, 화살표 함수는 간단한 함수를 더 간결하게 표현할 수 있는 표현식입니다.

 

 

=> 람다 표현식

//화살표 함수
//람다 표현식
void main() {
  int num1 = 500;

  int num2 = 10;

  //선언부
  int add(int n1, int n2) {
    //구현부
    return n1 + n2;
  }

  //구현부가 복잡하다면 람다 표현식보다 함수형식이 좋다.
  //람다식 => 구현부가 간단한 것만 가능함
  int add2(int n1, int n2) => n1 + n2;
  int sub(int n1, int n2) => n1 - n2;
  int mul(n1, n2) => n1 * n2;
  int div(n1, n2) => n1 / n2;
}

//재활용 하고 싶다면 ->  함수를 만들어주면됨 => 좀더 간결하고싶다면 => 화살표함수

 

void main() {
  int add(a, b) => a + b;
  // 리스트의 각 요소를 제곱하는 화살표 함수를 작성하세요.
  List<int> squareList(List<int> numbers) => numbers.map((e) => e * e).toList();
  print(squareList([1, 2, 3, 4, 5])); // 출력: [1, 4, 9, 16, 25]

  // 문자열 길이를 계산하는 화살표 함수를 작성하세요.
  List<int> getLengths(List<String> words) =>
      List.generate(words.length, (i) => words[i].length);
  print(getLengths(["Dart", "Flutter", "Arrow"])); // 출력: [4, 7, 5]

  // 숫자가 짝수인지 확인하는 화살표 함수를 작성하세요.
  bool isEven(int number) => number % 2 == 0;

  print(isEven(4)); // 출력: true
  print(isEven(7)); // 출력: false

  // 짝수만 필터링하는 화살표 함수를 작성하세요.
  List<int> filterEvens(List<int> numbers) =>
      numbers.where((element) => element % 2 == 0).toList();
  print(filterEvens([1, 2, 3, 4, 5, 6])); // 출력: [2, 4, 6]

  // 특정 단어를 포함한 문자열만 필터링하는 화살표 함수를 작성하세요.
  List<String> filterWords(List<String> words, String keyword) =>
      words.where((element) => words.contains(keyword)).toList();

  print(
      filterWords(["Dart is fun", "I love Flutter", "Hello World"], "Flutter"));
  // 출력: ["I love Flutter"]

  // 두 리스트의 곱을 계산하는 화살표 함수를 작성하세요.
  List<int> multiplyLists(List<int> listA, List<int> listB) =>
      List.generate(listA.length, (index) => listA[index] * listB[index]);

  print(multiplyLists([1, 2, 3], [4, 5, 6])); // 출력: [4, 10, 18]

  // 곱셈 클로저를 생성하는 화살표 함수를 작성하세요.
  Function makeMultiplier(int factor) => (int number) => number * factor;

  Function multiplier = makeMultiplier(3);

  print(multiplier(5)); // 출력: 15
  print(multiplier(7)); // 출력: 21

  // 두 숫자 중 큰 값을 반환하는 화살표 함수를 작성하세요.
  int max(int a, int b) => a >= b ? a : b;

  print(max(10, 20)); // 출력: 20

  // 문자열 리스트를 길이 순으로 정렬하는 화살표 함수를 작성하세요.
  List<String> sortByLength(List<String> words) =>
      words..sort((a, b) => a.length.compareTo(b.length));

  print(sortByLength(["Flutter", "Dart", "Programming"]));
  // 출력: ["Dart", "Flutter", "Programming"]
}
728x90
반응형

'Flutter' 카테고리의 다른 글

[플러터 11] Dart 클래스와 인스턴스  (0) 2025.01.03
[플러터 07] Dart 언어 함수  (0) 2025.01.03
[플러터 06] Dart 연산자  (0) 2025.01.02

댓글