Dart 문법 [String? name] 에 대해서 알아보기

2024년 10월 05일

Flutter

# Flutter# dart

📕 목차

오늘은 다트 문법 중 하나인 선택적 위치 파라미터 (Optional Positional Parameter)에 대해서 알아보겠습니다.

공식문서

함수의 매개변수를 정의할 때, []와 같이 Square Bracket을 사용하여 위치 매개변수를 선택적으로 만들 수 있습니다. (여기서, 선택적이란 말은 생략이 가능하다는 의미입니다)

예시를 통해 알아보겠습니다.

String say(String from, String msg, [String? device]) {
  var result = '$from says $msg';
  if (device != null) {
    result = '$result with a $device';
  }
  return result;
}

위의 예시는 공식문서에 나와있는 예시입니다. say 함수를 정의하고 위치 매개변수로 from, msg, device가 있습니다.

위와 같이 정의했을 때 우리는 다음과 같이 함수를 호출할 수 있습니다.

assert(say('Bob', 'Howdy') == 'Bob says Howdy');

device를 넘겨주지 않는 경우에는 device가 null이 되어 if문이 수행되지않고 결과값이 ‘Bob says Howdy’가 됩니다.

이번에는 device 매개변수에 값을 넘겨주는 경우를 살펴보겠습니다.

assert(say('Bob', 'Howdy', 'smoke signal') == 'Bob says Howdy with a smoke signal');

device에 값을 넘겨주는 경우에는 device가 null이 아니기 때문에 if문이 수행되어 결과값이 ‘Bob says Howdy with a smoke signal’가 됩니다.

위와 같이 선택적 위치 파라미터를 사용하면 함수를 호출할 때 필요한 매개변수만 넘겨줄 수 있어서 코드를 간결하게 작성할 수 있습니다.

선택적 위치 파라미터

  1. 선택적 위치 파라미터에 기본값을 설정하는 경우 이는, 컴파일 타임의 상수가된다.
String say(String from, String msg, [String device = 'carrier pigeon']) {
  var result = '$from says $msg';
  if (device != null) {
    result = '$result with a $device';
  }
  return result;
}

assert(say('Bob', 'Howdy') == 'Bob says Howdy with a carrier pigeon');
profile

박민기

단순하게 살아라. 현대인은 쓸데없는 절차와 일 때문에 얼마나 복잡한 삶을 살아가는가? - 이드리스 샤흐

© 2025, 미나리와 함께 만들었음