[Flutter/Dart] 포지셔널 파라미터와 네임드 파라미터

Dart에서는 함수를 정의할 때 매개변수를 사용하는 방법으로 "포지셔널 파라미터"와 "네임드 파라미터" 두 가지가 있습니다. 이 글에서는 두 개념을 명확히 설명하고, 언제 어떻게 활용해야 하는지 알려드립니다.

 

 

1. 포지셔널 파라미터(Positional Parameters)

포지셔널 파라미터는 순서대로 전달해야 하는 매개변수입니다. 함수 호출 시 매개변수의 위치가 중요하며, 선언된 순서대로 값을 넣어야 합니다.

 

기본 예제

void greet(String firstName, String lastName) {
  print("Hello, $firstName $lastName!");
}

void main() {
  greet("John", "Doe"); // Hello, John Doe!
}

위 코드에서 greet("John", "Doe")를 호출하면, 첫 번째 인자는 firstName, 두 번째 인자는 lastName으로 전달됩니다.

 

선택적 포지셔널 파라미터

Dart에서는 [] 대괄호를 사용하여 선택적 포지셔널 파라미터를 만들 수 있습니다.

void greet(String firstName, [String? lastName]) {
  if (lastName != null) {
    print("Hello, $firstName $lastName!");
  } else {
    print("Hello, $firstName!");
  }
}

void main() {
  greet("John");       // Hello, John!
  greet("John", "Doe"); // Hello, John Doe!
}

선택적 포지셔널 파라미터는 기본적으로 null 값을 가질 수 있으며, 이를 방지하려면 기본값을 설정하면 됩니다.

void greet(String firstName, [String lastName = "Doe"]) {
  print("Hello, $firstName $lastName!");
}

 

 

2. 네임드 파라미터(Named Parameters)

네임드 파라미터는 이름을 지정하여 전달하는 매개변수입니다. 순서를 신경 쓰지 않아도 되며, 코드의 가독성을 높이는 데 유용합니다.

 

기본 예제

void greet({String? firstName, String? lastName}) {
  print("Hello, ${firstName ?? "Guest"} ${lastName ?? ""}!");
}

void main() {
  greet(firstName: "John", lastName: "Doe"); // Hello, John Doe!
  greet(lastName: "Doe", firstName: "Jane"); // Hello, Jane Doe!
  greet(firstName: "Alice"); // Hello, Alice !
}

네임드 파라미터를 사용하면 매개변수의 순서가 바뀌어도 상관없습니다.

 

필수 네임드 파라미터

required 키워드를 사용하면 특정 네임드 파라미터를 필수값으로 만들 수 있습니다.

void greet({required String firstName, required String lastName}) {
  print("Hello, $firstName $lastName!");
}

void main() {
  greet(firstName: "John", lastName: "Doe"); // Hello, John Doe!
  // greet(firstName: "John"); // 오류 발생: lastName이 필수
}

 

기본값을 가진 네임드 파라미터

네임드 파라미터에도 기본값을 설정할 수 있습니다.

void greet({String firstName = "Guest", String lastName = "Doe"}) {
  print("Hello, $firstName $lastName!");
}

void main() {
  greet(); // Hello, Guest Doe!
  greet(firstName: "Alice"); // Hello, Alice Doe!
}

 

 

결론

Dart에서는 포지셔널 파라미터와 네임드 파라미터를 적절히 활용하여 코드의 가독성을 높이고 유지보수를 쉽게 만들 수 있습니다. 기본적으로 필수 매개변수는 포지셔널을, 선택적 매개변수는 네임드를 사용하는 것이 일반적입니다.

Dart의 유연한 함수 매개변수를 잘 활용하여 가독성과 유지보수성을 높이는 코드를 작성해 보세요! 😊