Dart에서 optional parameters를 정하는 2가지 방식이 있다. (positional과 named)
Optional parameters는 주어진 function을 호출할 때 지정할 필요가 없는 변수이다.
optional parameters는 반드시 required parameter 다음에 선언되어야 한다.
그리고 optional parameter에는 기본값을 사용할 수 있으며, 이는 함수 호출 시 변수를 지정하지 않을 경우 사용된다.
Positional parameters in Dart
Dart에서 Square brackets [] 은 optional, positional parameter를 명시할 때 사용된다.
readFile(String name, [String mode, String charset = 'utf-8']) {
// ...
}
위 선언에서 'name'은 항상 필수값(required)이고, 반면 'mode'와 'charset'은 optional이다.
또한 'charset'은 값이 지정되지 않으면 기본값으로 'utf-8'을 갖는다.
파일의 'charset'을 지정하려는 경우 'mode'는 생략할 수 없기 때문에 이런 parameter는 positional이다.
readFile('hello.dart');
readFile('hello.dart', 'w+');
readFile('hello.dart', 'w+', 'iso8859-1');
추가로 parameter의 이름은 오직 function을 선언하는 level에서만 지정되고, 표시된다.
함수 호출자(caller)는 그 parameter에 해당하는 위치를 알아야만 한다. 이 때문에 코드가 약간 읽기 어려워진다.
Named parameters in Dart
Dart에서 curly brackets {} 은 optional, named parameter를 지정하는 데 사용한다.
readFile(String name, {String mode, String charset = 'utf-8'}) {
// empty
}
named parameter는 이름으로 참조되고, 이는 function이 호출될 때 function 선언과 다른 순서로 사용될 수 있다는 걸 의미한다.
readFile('hello.dart');
readFile('hello.dart', mode: 'w+');
readFile('hello.dart', charset: 'iso8859-1');
readFile('hello.dart', charset: 'iso8859-1', mode: 'w+');
readFile('hello.dart', mode: 'w+', charset: 'iso8859-1');
'프로그래밍 > Flutter & Dart' 카테고리의 다른 글
[Flutter] build 시 error (0) | 2022.07.22 |
---|---|
[Flutter] Android Emulator error (0) | 2022.03.23 |
[Flutter] Single-child layout / Multi-child layout / Silver Widgets (0) | 2021.08.15 |
[Flutter] EdgeInsets class (0) | 2021.08.15 |
[Flutter] Class, constructor, property (0) | 2021.08.15 |
댓글