목차
반응형
안녕하세요!
다트 언어의 일급 객체에 대해 알아보겠습니다.
일급 객체
- 다트에서는 함수를 값으로 취급 가능
- 다른 변수에 함수를 대입 가능
void greeting(String text) {
print(text);
}
void main() {
var f = greeting; //함수를 다른 변수에 대입
f('hello');
}
- 다른 함수의 인수로 함수 자체를 전달하거나 함수를 반환받을 수 있음
- 함수를 매개변수로 전달하기, 수정하기, 변수에 대입하기가 가능한 객체를 일급 객체(first-class object)
//something() 함수는 인수로 Function이라는 특수한 클래스의 인스턴스를 받음
//Function은 다트에서 함수를 매개변수로 전달하고자 할 때 사용하는 타입
//something() 함수는 내부에서 10이 매개변수로 전달된 f() 함수를 돌려줌, f() 함수는 익명함수
//결과는 10을 출력
void something(Function(int i) f){
f(10);
}
void main() {
something((value) {
print(value);
});
}
- 다트에서 함수를 표현할 수 있는 것들(람다식, 익명 함수, 메서드)은 모두 값으로 취급할 수 있음
- 함수를 다른 함수에 전달하는 방법도 여러 가지
void something(Function(int i) f){
f(10);
}
void myPrintFunction(int i) {
print('내가 만든 함수에서 출력한 $i');
}
void main() {
something(myPrintFunction); //내가 만든 함수에서 출력한 10
something((i) => myPrintFunction(i)); //내가 만든 함수에서 출력한 10
something((i) => print(i)); //10
something(print); //10
}
반응형
'자기계발 > IT' 카테고리의 다른 글
[Flutter/플러터] 다트(Dart) 언어 where 함수 알아보기 (8) | 2023.03.04 |
---|---|
[Flutter/플러터] 다트(Dart) 언어 for, forEach 알아보기 (17) | 2023.03.04 |
[Flutter/플러터] 다트(Dart) 언어 스프레드 연산자, Map, Set 알아보기 (75) | 2023.02.24 |
[Flutter/플러터] 다트(Dart) 언어 List, dynamic 알아보기 (9) | 2023.02.24 |
[Flutter/플러터] 다트(Dart) 언어 열거 타입 알아보기 (20) | 2023.02.23 |