Dart 함수 사용법 총정리

Dart언어의 함수 사용법에 대한 포스팅입니다.

함수 사용법

기본적인 함수의 선언 문법은 다음과 같습니다.

/*
함수리턴타입(생략시 void) 함수이름(매개변수) {
    함수내용(표현식)...
}
*/

//예)
void testFunction(testParameter) {
    print(testParameter);
}

 

매개변수 (Parameter)

Dart 함수의 매개변수에는 여러 종류가 있습니다.

Parameter

기본적인 매개변수입니다. 매개변수 가 선언된 순서대로 함수 호출 시 사용합니다.

void main() {
    showNumbers(10, 20, 30);
    /* Result -->
      a: 10
      b: 20
      c: 30
    */
}

showNumbers(int a, int b, int c) {
    print('a: $a');
    print('b: $b');
    print('c: $c');
}

Optional Parameter

비필수인 매개변수를 의미합니다. 매개변수를 받지만 함수 호출 시 해당 매개변수를 넘기지 않아도 실행 가능합니다.
Optional 매개변수들은 '[ ]'로 묶어서 표현합니다.

void main() {
    showNumbers(10);
    /* Result -->
      a: 10
      b: null
      c: null
    */
    showNumbers(10, 20, 30);
    /* Result -->
      a: 10
      b: 20
      c: 30
    */
}

showNumbers(int a, [int? b, int? c]) {
    print('a: $a');
    print('b: $b');
    print('c: $c');
}
💡 Optional 매개변수를 넘기지 않을 경우 자동으로 null 값이 할당된다.
그래서 null이 들어갈 수 있는 int? 타입으로 Optional 매개변수를 선언합니다.


또 Optional 매개변수에는 해당 매개변수가 안 넘어올 것을 대비하여 기본값을 설정할 수 있습니다.

void main() {
    showNumbers(10);
    /* Result -->
      a: 10
      b: 20
      c: 30
    */
}

showNumbers(int a, [int? b = 20, int? c = 30]) {
    print('a: $a');
    print('b: $b');
    print('c: $c');
}

Named Parameter

매개변수에 이름을 지정해 주는 것으로 이름이 지정된 매개변수는 함수 호출 시 순서와 상관없이 이름에 맞춰 매개변수를 넘겨주고 실행합니다. '{ }'를 사용하여 Named Parameter를 지정할 수 있습니다.
또 Named Parameter 들은 앞에 'required'를 통하여 필수, 비필수(optional) 여부를 지정하여 사용합니다.

void main() {
    showNumbers(a:10,b:20);
    /* Result -->
      a: 10
      b: 20
      c: 30
    */
    showNumbers(a:10,b:20,c:50);
    /* Result -->
      a: 10
      b: 20
      c: 50
    */
}

showNumbers({
    required int a,
    required int b,
    int c = 30
}) {
    print('a: $a');
    print('b: $b');
    print('c: $c');
}

 

리턴 타입

함수 리턴 타입은 함수가 리턴하는 데이터의 타입(자료형)을 의미합니다.
예제를 보면 바로 이해가 되실 겁니다.

void main() {
    print(addNumbers(10, 20));
    // Result --> 30;
}

int addNumbers(int a, int b) {
    return a + b;
}
// int 데이터를 리턴하기때문에 함수이름 앞에 'int'를 붙여줍니다.
💡 함수 이름 앞에 아무 자료형도 쓰지 않을 경우 기본 'void'를 의미합니다.
void는 '공허'라는 뜻으로 아무것도 리턴하지 않습니다.

 

익명 함수

익명 함수는 이름이 없는 함수를 의미합니다.
함수의 리턴 타입 및 이름을 정의하지 않고 선언하는 것입니다.

void main() {
    var noNameFunction = (a, b) {
        return(a + b);
    };
    
    print('${noNameFunction(5, 10)}');
    // Result --> 15
}

익명 함수를 호출하기 위해 변수에 저장하여 사용했습니다.
보통은 매개변수로 넘어가는 임시 함수를 만들 때 사용합니다.

 

람다식

람다식은 함수에서 표현식 부분 '{ }'을 '=>'로 바꾼 것입니다.
'return' 또한 함수 리턴 타입이 있다면 생략하여도 자동으로 리턴됩니다. (익명 함수라면 표현식의 결과에 따라..)

void main() {
    addNumbers(10,20);
    // Result --> 30
}

int addNumbers(a,b) => a + b;