Dart 익명함수와 화살표 함수

Ruinak·2021년 9월 19일
0

Dart

목록 보기
4/11
post-thumbnail

함수(메서드)

1. 일반 메서드를 익명 함수로 변경해서 변수에 저장

2. 변수의 타입에 함수를 저장할 것이라면 Function(Type), var(Type), dynamic(Type)을 사용 가능

3. 일반 메서드를 생성할 떄 한 줄 밖에 안된다면 그냥 { }와 return을 생략하고 => 화살표를 사용 가능

기본형

// 함수(메서드)
void hello(){
  print("Hello World");
}

// dart는 리턴타입을 지정 안해도 됩니다.
hi(){
  print("Hi");
}

void main(){
  hello();
  hi();
}

익명함수

// 함수(메서드)
void hello(){
  print("Hello World");
}

// dart는 리턴타입을 지정 안해도 됩니다.
 hi(){
  print("Hi");
}

// dart는 메서드가 1급 객체이기 때문에 변수에 저장할 수 있습니다.
// 아래에 ( 부터 }까지를  함수를 익명함수라고 합니다.
// 익명함수는 변수에 저장할 수 있습니다.
Function hihi = (){
  print("HiHi");
};

// 익명 함수 - var
// var는 모든 타입을 넣을 수 있으므로 함수도 넣을 수 있음
var hihihi = (){
  print("HiHiHi");
};

// 익명 함수 - dynamic
dynamic hihihihi = (){
  print("HiHiHiHi");
};

void main(){
  hello();
  hi();
  // 익명 함수를 변수에 저장해서 호출
  hihi();
  hihihi();
  hihihihi();
}

화살표 함수

// 함수(메서드)
void hello(){
  print("Hello World");
}

// dart는 리턴타입을 지정 안해도 됩니다.
 hi(){
  print("Hi");
}

// dart는 메서드가 1급 객체이기 때문에 변수에 저장할 수 있습니다.
// 아래에 소괄호부터 중괄호까지를 익명함수라고 합니다.
// 익명함수는 변수에 저장할 수 있습니다.
Function hihi = (){
  print("HiHi");
};

// 익명 함수 - var
// var는 모든 타입을 넣을 수 있으므로 함수도 넣을 수 있음
var hihihi = (){
  print("HiHiHi");
};

// 익명 함수 - dynamic
dynamic hihihihi = (){
  print("HiHiHiHi");
};

// 함수가 가지고 있는 내부 스택(소괄호부터 중괄호까지, 코드블럭이라고 함)이 한 줄이면 
// 다른 방법을 제시할 수 있습니다.
Function add = (){
  return 1 + 1;
};

// 이 다른 방법이 바로 화살표 함수입니다.
// 화살표가 붙으면 return 키워드를 생략할 수 있습니다.
// 화살표 함수는 return Type이 정확해야 합니다.
int add2() => 2 + 2;

// 코드 불럭이 두 줄일 경우에는 화살표 함수 사용 불가
var ad3 = (){
  print("두 줄일 경우");
  return 3 + 3;
};

void main(){
  hello();
  hi();
  // 익명 함수를 변수에 저장해서 호출
  hihi();
  hihihi();
  hihihihi();

  print(add());
  // 화살표 함수 호출
  print(add2());
}

정리

// sum은 기본 메서드
int sum(){
  return 10;
}

// 익명 함수를 저장하는 sum2 변수
// 오른쪽의 함수를 저장하는 변수가 되므로 int인 return 타입이 아니라 
// 오른쪽과 같은 타입인 Function으로 바꿔줘야 함
Function sum2 = (){
  return 20;
};

// 화살표 함수
// 한 줄만 적는 것이라면 중괄호를 생략하고, return문을 생략해서 화살표로 표현할 수 있습니다.
int sum3() => 30;

// 화살표 함수를 저장하는 sum4 변수
// 화살표 함수를 저장하기 위해서 sum4의 타입은 오른쪽과 같이 Functin이 되어야 함
Function sum4 = () => 40;

void main() {
  print(sum());
  print(sum2());
  print(sum3());
  print(sum4());
}

sum은 기본 메서드

sum2는 변수로 익명 함수를 저장하는

  • 오른쪽의 함수를 저장하는 변수가 되므로 int인 return 타입이 아니라
  • 오른쪽과 같은 타입인 Function으로 바꿔줘야 함

sum3는 화살표 함수

  • 한 줄만 적는 것이라면 중괄호를 생략하고, return문을 생략해서 화살표로 표현할 수 있습니다.

sum4는 변수로 화살표 함수를 저장

  • 화살표 함수를 저장하기 위해서 sum4의 타입은 오른쪽과 같이 Functin이 되어야 함
profile
Nil Desperandum <절대 절망하지 마라>

0개의 댓글