본문 바로가기
자기계발/IT

[Flutter/플러터] 다트(Dart) 언어 일급 객체 알아보기

by KTC 2023. 3. 2.

목차

    반응형

    안녕하세요!

    다트 언어의 일급 객체에 대해 알아보겠습니다.

     

    일급 객체

    • 다트에서는 함수를 값으로 취급 가능
    • 다른 변수에 함수를 대입 가능
    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
    }
    반응형