본문 바로가기

춘기IT/춘기개발

Dart 문법: Dart 함수 파라미터 정리 (Positional / Named / Optional)

 

 

Dart에서는 함수를 정의할 때 전달 방식에 따라 3가지 파라미터를 사용할 수 있습니다.

  • 포지셔널 파라미터 (positional parameters)
  • 네임드 파라미터(named parameters)
  • 옵셔널한 파라미터? (optional parameters)

1. 포지셔널 파라미터 (positional parameters)

- 파라미터 순서를 중요하게 받아 처리하는 방식으로 전달 순서가 중요하며, 괄호 안에 나열됩니다.

//두 수의 뺄셈 예제
int substract(int a, int b) {
  int sum = a - b;
  return sum;
}

void main() {
  int result = substract(3, 5);
  int result2 = substract(5, 3);
  print('결과: $result');  // 출력: 결과: -2
  print('결과: $result2');  // 출력: 결과: 2
}

 

ㄴ int a와 b를 전달받고 있는데, 여기서 파라미터의 순서가 중요합니다.

    예를 들어 덧셈의 경우 두 위치가 바뀌더라도 결과는 달라지지 않지만,

    만일, 뺄셈을 한다고 하면 위와 같이 출력 결과가 -2, 2로 달라짐을 확인할 수 있습니다.

 

2. 네임드 파라미터 (named parameters)

- 파라미터 전달 시 이름을 지정해서 전달합니다.

//네임드 파라미터의 두 수의 덧셈 함수 예제
int add({required int frontValue,required int endValue}) {
  int sum = frontValue + endValue;
  return sum;
}

void main() {
  int result = add(frontValue : 3, endValue : 5);
  print('결과: $result');  // 출력: 결과: 8
}

 

ㄴ 포지셔널 파라미터와 비교했을 때 좀 더 복잡해보이나, 이름과 타입을 지정해서 전달하는 파라미터로 순서와 상관이 없습니다.

//네임드 파라미터의 두 수의 뺄셈 함수 예제
int substract({required int frontValue,required int endValue}) {
  int sum = frontValue - endValue;
  return sum;
}

void main() {
  int result = substract(frontValue : 3 , endValue : 5);
  int result2 = substract(endValue : 5 , frontValue : 3); //순서를 바꿈
  print('결과: $result');  // 출력: 결과: -2
  print('결과: $result2');  // 출력: 결과: -2
}

 

ㄴ 파라미터의 이름을 명확하게 하여 개발자가 명확한 값을 전달할 수 있다는 점에서 장점이 있고,

    옵셔널한 파라미터도 설정 가능함에 있어 강점이 있습니다.

 

3. 옵셔널한 파라미터? (optional parameters)

- 옵션 값이라는 의미로, 전달해도 되고 전달하지 않아도 되는 파라미터를 설정할 수 있습니다.

- 포지셔널 파라미터의 경우 반드시 파라미터 갯수를 모두 충족해야만 프로그램이 돌아가는 반면,

   네임드 파라미터의 경우 옵션 값을 설정 할 수 있어 아래 코드와 같이 넣어도 되고 넣지 않아도 되는 함수를 만들 수 있습니다.

//네임드 파라미터의 옵셔널한 예제
int add({required int frontValue,required int endValue, int? expansionValue}) {
  int sum = frontValue + endValue + (expansionValue??0);
  return sum;
}

void main() {
  int result = add(frontValue : 3, endValue : 5);
  int result2 = add(frontValue : 3, endValue : 5, expansionValue : 3);
  print('결과: $result');  // 출력: 결과: 8
  print('결과: $result2');  // 출력: 결과: 11
}

 

ㄴ 같은 add 함수를 사용한것으로 expansionValue 값을 안넣어도 되고, 넣어도 되는 것을 옵셔널 하다고 표현합니다.

 

세 가지 함수 파라미터의 방식은 상황에 따라 혼합하여 사용할 수 있습니다.

명확한 코드 구조와 가독성을 위해 named + optional 조합을 자주 사용한다고 합니다.