본문 바로가기
Flutter

[Dart]Named 파라미터

by 계양구놈팽이 2023. 3. 14.

Dart는 네임드 파라미터 기능을 제공한다. 메소드를 호출할 때 파라미터의 이름을 대고 파라미터의 값을 지정해주는 것을 네임드 파라미터라고 한다.

C#에서는 메소드에 별도 처리없이 일반적인 파라미터 값만 지정하고 호출하든 네임드 파라미터를 사용하든 자유롭지만, Dart에서는 이를 메소드를 선언할때 명확히 해줘야 한다.

 

아래의 코드 예시는 일반적인 함수의 호출 사례이다.

void printHelloWorld(int numbers, String postfix)
{
  for (int i = 0; i < numbers; i++) {
    print('hello ${i + 1} $postfix');
  }
}


void main() {
  printHelloWorld(5,'world');
}

이를 네임드 파라미터를 지원하는 함수로 바꿔주면 다음과 같다.

void printHelloWorld({int numbers, String postfix})
{
  for (int i = 0; i < numbers; i++) {
    print('hello ${i + 1} $postfix');
  }
}


void main() {
  printHelloWorld(
    numbers: 5,
    postfix: 'world',
  );
}

하지만 여기서 끝이 아니다.

주의할 점은 Dart는 null safety언어로서 코드 레벨에서 null 이 발생할지도 모르는 경우에 대하여 매우 민감하다.

그렇기에 위의 코드를 입력하면 IDE에서 Error가 발생한다. 그렇기에 메소드의 default 값을 지정해줘야 한다.

void printHelloWorld({
  int numbers = 10,
  String postfix = '',
})
{
  for (int i = 0; i < numbers; i++) {
    print('hello ${i + 1} $postfix');
  }
}


void main() {
  printHelloWorld(
    numbers: 5,
    postfix: 'world',
  );
}

하지만, 이렇게 하면 게으른 사용자가 반드시 넣어줘야 할 값을 제공해주지 않을 불상사가 생길 수 있다.

아래의 예시처럼 argument에 대해 required를 지정하면, 메소드를 호출할때 반드시 두개의 파라미터를 제공해줘야 한다.

void printHelloWorld({
  required int numbers,
  required String postfix ,
})
{
  for (int i = 0; i < numbers; i++) {
    print('hello ${i + 1} $postfix');
  }
}


void main() {
  printHelloWorld(
    numbers: 5,
    postfix: 'world',
  );
}

'Flutter' 카테고리의 다른 글

[Flutter] 네이버 지도 API 사용법  (0) 2023.03.02
Flutter 앱 프로젝트 생성(VS code)  (0) 2023.02.18