본문 바로가기
개발해보겡/Flutter

Dart named parameter & positional parameter

by 개발자욱 2023. 1. 2.
728x90
반응형

처음 함수를 접해서 함수를 사용하는 방법은 다음과 같습니다.

String intro(
  String name,
  int age,
  String address,
) {
  return "My name is $name, I'm $age and in $address";
}

void main() {
  print(
    intro(
      'name',
      20,
      'Seocho-gu',
    ),
  );
}

형식 매개변수와 실매개변수의 위치가 같아야 합니다.

매개변수가 몇 개 되지 않는다면 괜찮겠지만 

매개변수가 많아진다면 모든 인자의 위치를 맞추는 것은 번거롭습니다. 

positional parameter보다는 named parameter를 사용하는 것이 좋습니다.

named parameter를 사용하기 위한 몇 가지 수정 사항이 있습니다.

String intro(
  String name,
  int age,
  String address,
) {
  return "My name is $name, I'm $age and in $address";
}

void main() {
  print(
    intro(
    // 단순히 파라미터 이름을 지정해서 전달하는 경우 오류
      name: 'name', // The named parameter 'name' isn't defined
      age: 20, // The named parameter 'age' isn't defined 
      address: 'Seocho-gu', // The named parameter 'address' isn't defined
    ), // 3 positional argument(s), but 0 found.
  );
}

단순히 파라미터 이름을 지정해서 전달하면 오류가 납니다.

named parameter를 사용하기 위해서 intro() 함수에 중괄호와 required 또는 defalut value를 사용합니다. 

String intro({ // 중괄호로 감싸는 것이 중요함
  // 1. required 반드시 인수 받기 - 컴파일 안됨
  required String name, 
  required int age,
  // 2. defalut 
  String address = gangnam-gu,
}) {
  return "My name is $name, I'm $age and in $address";
}

디폴트 값을 사용하면 해당 파라미터 값을 전달하지 않아도 됩니다.

추가적으로 Optional Positional Parameter에 대해서 알아보겠습니다.

Optional Positional Parameter는 인수로 전달된 값이 null일 때 default 값을 사용합니다.

String intro(
  String name,
  int age,
  [String? address = 'Seocho-gu'],
) {
  return "My name is $name, I'm $age and in $address";
}

void main() {
  print(
    intro(
      'name',
      20,
    ),
  );
}
반응형