함수(메서드)
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이 되어야 함