[Dart 문법] 함수 파라미터 [] 과 {} 차이점

플러터를 개발하다 보면 많은 라이브러리를 접하게 되죠.

그 라이브러리의 코드 내부를 들여다 보면 함수의 파라미터에

다음과 같이 [] / {} 문법을 사용하는 것을 많이 보실수 있을거에요.

 

아래 코드들은 여기서(https://dartpad.dev/) 바로 확인해 보실수 있어요.

 

case 1. [] 파라미터 사용법 (funtion parameter with [])

  - 정식 명칭은 Dart optional positional parameter

  - 생략 가능하며 생략된 경우 default 값을 사용하거나 null이 입력됨

  - y 값은 nullable, z의 기본값은 1

  - z의 값을 입력하기 위해서는 y값은 생략 불가

void main() {
  print(calc(2));
  print(calc(3, 2));
  print(calc(4, 3, 2));
}

int calc(int x, [int? y, int z = 1]) {
  return x + (y ?? 0) + z;
}

/* 실행 결과입니다. 
3
6
9
*/

 

case 2. {} 파라미터 사용법 (funtion parameter with {})

  - 정식 명칭은 Dart optional named parameter

  - 생략 가능하며 생략된 경우 default 값을 사용하거나 null이 입력됨

  - required 예약어를 통해 강제로 입력받을수 있음

void main() {
  info('John', job: 'carpenter', gender: 'Male');
  info('Mary', job: 'nurse', gender: 'Female');
}

void info(String name, {required String gender, String? job}) {
  print("($gender) $name is a $job");
}

/* 실행 결과입니다. 
(Male) John is a carpenter
(Female) Mary is a nurse
*/

 

이상으로 함수를 구현할때 효과적으로 파라미터를 사용할 수 있는 옵셔널 파라미터에 대해 알아보았습니다.


 

728x90