Flutter

[dart] 익명 함수와 화살표 함수

31daylee 2024. 1. 31. 16:41
728x90

📌익명 함수( Anoymous Function )


익명 함수(Anoymous Function)은 이름이 없는 함수를 뜻합니다.선언을 하더라도 다시 호출할 방법이 없고 마지막에 세미콜론을 찍는 특징이 있습니다.

// 매개변수가 하나인 경우 
(매개변수){
	수행 구문 
};

// 매개변수가 다수인 경우
(매개변수1, 매개변수2 ...){
	수행 구문 
};

 

예시 코드 

void main(){

  // 1단계
  (int number){
    return 100 + number;
  }; 

  // 변수에 할당하지 않고 바로 익명 함수를 호출 하는 것은 dart에서는 불가능

  // 2단계: 함수를 변수에 담을 수 있다(dart는 일급 객체를 지원)
  int Function(int) square = (int number){
    return number * number;
  };
  print("square : ${square.runtimeType}");
  
  // 2-1 단게 : 명시적 타입(Function)과 리턴 타입이 생략, 파라미터 타입도 생략 가능
  Function sub =  (a,b){
    return a-b;
  };

  // 3단계 : var 키워드에 사용(타입 추론 : 자동으로 타입을 할당)
  var cube = (int number){
    return number * number * number;
  };

  // 4단계 : 익명 함수 파라미터 생략 가능
  var add = (number){
    return number+10;
  };

  // 5단계
  var multiply = (a,b){
    return a* b;
  };

  // 메서드의 호출은 괄호이다
  print("2의 제곱은 ${square(2)}");
  print("두 수의 빼기 연산 ${sub(15,10)}");
  print("3의 3제곱은 ${cube(3)}");
  print("곱셈의 결과값은 ${multiply(10,20)}");

  
}
square : (int) => int
2의 제곱은 4
두 수의 빼기 연산 5
3의 3제곱은 27
곱셈의 결과값은 200
두 수의 덧셈은 30

 

 

 

 

 

 

 

 

📌화살표 함수( Arrow Function )


Dart에서의 화살표 함수(arrow function)는 함수를 간결하게 정의하고 사용할 수 있는 특별한 문법입니다. 다른 프로그래밍 언어에서는 람다 함수 또는 람다 표현식이라 부릅니다. 화살표 함수는 Dart 2.7 버전부터 지원되기 시작했습니다. 기존 함수 정의와 비교하면, 화살표 함수는 간단한 함수를 더 간결하게 표현할 수 있는 표현식입니다. 여기서 중요한 부분은 “화살표 함수는 == 표현식이다”라는 말에 집중해 봅시다.

returnType functionName(parameters...) => expression;
// 일반적인 함수 정의
int add(int a, int b) {
  return a + b;
}

// 화살표 함수로 변환
int addArrow(int a, int b) => a + b;

 

 

예시 코드

void main() {
  int num1 = 500;
  int num2 = 10;
  print("${div(num1,num2)}");
}

/// 1. 기존 함수 정의
int add1(int n1, int n2) {
  return n1 + n2;
}

int sub1(int n1, int n2) {
  return n1 - n2;
}

int mul1(int n1, int n2) {
  return n1 * n2;
}

double div1(int n1, int n2) {
  return n1 / n2;
}
/// 2. 화살표 함수 정의
int add(int n1, int n2)=> n1+n2;
int sub(int n1, int n2)=> n1-n2;
int mul(int n1, int n2)=> n1*n2;
double div(int n1, int n2)=> n1/n2;

 

 

 

 

화살표 함수의 한계 

 

화살표 함수는 단일 표현식인 경우에만 사용할 수 있습니다.

복잡한 함수를 정의할 때는 기존의 Function 키워드를 사용하는 것이 적절할 수 있습니다. 화살표 함수는 주로 간단한 연산을 수행하는 경우나 콜백 함수로 사용될 때 유용하며, 코드의 가독성과 간결성을 높일 때 사용할 수 있도록 합시다.

 

사용 불가능 예시 코드

int subtract(int a, int b) {
  if (a > b) {
    return a - b;
  } else {
    return b - a;
  }
}

 

 

 

 

 

 

<참고 자료>

https://dart-ko.dev/language/functions

 

함수

Dart 언어의 함수에 대한 모든 것

dart-ko.dev

 

728x90