Dart #11 | Named Parameters

HyeonWooGa·2023년 10월 8일
0

Dart

목록 보기
12/25
post-thumbnail

Named Parameters


  • Dart 함수의 장점인 Named Parameters 개요
  • Named Parameters 사용

개요

  • Flutter 에서 자주 사용되는 개념, 항상 사용된다.
  • (Positional Parameters); Named Parameters 를 사용하지 않았을 때는 매개변수의 순서를 꼭 기억해야 함수에게 합당한 값을 전달하며 호출 할 수 있지만,
    • Positional Parameters; 함수 호출시 선언된 매개변수 갯수대로 전달인자 전달 되지 않으면 Error
    • 매개변수에 초깃값을 주는 것도 불가능
    • 매개변수에 초깃값을 주고 싶으면 Named Parameters({} 사용 해야함)
  • Named Parameters 를 사용하면 순서와 상관없이 매개변수 이름을 사용하여 값을 전달하면 되므로 보다 직관적으로 함수 호출 가능

사용

  • 기존 매개변수 선언 방식에서 매겨변수를 중괄호로만 감싸주면 된다.
  • 하지만 중괄호로만 감싸주는 경우, Null Safety 가 작동해서 처리를 해줘야한다.
  • 두 가지 방법으로 Null Safety 처리가 가능하다.
    1. 매개변수에 초기값 지정
    2. 매개변수에 requied modifier 사용
// Named Parameters

//// Named Parameters 를 사용하지 않은 함수
//// Main 함수에서 해당 함수 호출시,
//// 각 파라미터의 역할이 명확히 명시되어 있지 않아서 헷갈릴 수 있음
//// 매개변수의 순서들을 기억해야함.... 하드코딩 느낌...
String sayHello1(
  String personName,
  String myName,
  int myAge,
  String myCountry,
) {
  return 'Hello $personName, I\'m $myName, $myAge and from $myCountry.';
}

//// Named Parameters 를 사용한 함수
//// 기존 매개변수 정의 방식에서 양 끝단을 중괄호로 감싸주기만 하면 완성이다.
//// 매개변수의 순서들을 기억할 필요없고 변수명(목적)만 기억해 주면 된다. (직관적)

//// 다만 Dart 의 NullSafety 로 인하여
//// Main 단에서 각 매개변수의 값이 안 들어올 경우를 대비해야한다고 오류 발생
//// 해결법으론 두가지가 있다.

////// 1. 매개변수 초기값(default value)을 지정해주는 방법
String sayHello2({
  String personName = 'Anon',
  String myName = 'Anon',
  int myAge = 99,
  String myCountry = 'Earth',
}) {
  return 'Hello $personName, I\'m $myName, $myAge and from $myCountry.';
}

////// 2. required modifier 사용
////// 함수 호출시, 매개변수 값 전달을 강제해주는 방법
String sayHello3({
  required String personName,
  required String myName,
  required int myAge,
  required String myCountry,
}) {
  return 'Hello $personName, I\'m $myName, $myAge and from $myCountry.';
}


void main() {
  print(sayHello1('Lee', 'Park', 31, 'Suwon'));
  // 'Hello Lee, I'm Park, 31 and from Suwon.' 출력

  print(sayHello2(
    myName: 'Park',
    myAge: 31,
    personName: 'Kim',
  ));
  // sayHello2 함수 호출시 매개변수 myCountry 의 값을 전달 안했지만 초기화된 값으로 반환됨
  // 'Hello Kim, I'm Park, 31 and from Earth.' 출력

  print(sayHello3(
    myName: 'Park',
    myAge: 31,
    myCountry: 'Suwon',
    personName: 'Kang',
  ));
  // sayHello3 함수 호출시 매개변수 값 전달이 누락되면 Error 발생
  // 'Hello Kang, I'm Park, 31 and from Suwon.' 출력
}

학습 중에 작성된 내용이므로 잘못되거나 부족한 내용이 있을 수 있습니다.

profile
Aim for the TOP, Developer

0개의 댓글