Dart 문법 [String? name] 에 대해서 알아보기
2024년 10월 05일
Flutter
📕 목차
오늘은 다트 문법 중 하나인 선택적 위치 파라미터 (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’가 됩니다.
위와 같이 선택적 위치 파라미터를 사용하면 함수를 호출할 때 필요한 매개변수만 넘겨줄 수 있어서 코드를 간결하게 작성할 수 있습니다.
선택적 위치 파라미터
- 선택적 위치 파라미터에 기본값을 설정하는 경우 이는, 컴파일 타임의 상수가된다.
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');