dart의 함수에서 사용할 수 있는 또다른 기능이지만 주로 사용하지는 않는다.
매개변수에 대괄호로 감싸주면 되는데, 매개변수를 optional하게 지정해준다.
String Hi (
[name = 'jinjin'];
) => 'Hello $name';
void main() {
print(Hi()); // Hello jinjin
}
defalut value와 다른 점은, 매개변수를 key: value 형식으로 입력하지 않아도 된다는 점
defalut value > Hi(name: 'jinjin');
Optional Positional Parameters > Hi('jinjin');
dart에서 null 값을 더 간결하게 비교해주는 오퍼레이터이다.
String up(String? name) => name != null ? name.toUpperCase() : 'ANON';
// 이런 삼항 연산자를 아래와 같이 바꿀 수 있다.
String up(String? name) => name?.toUpperCase() ?? 'ANON';
// 좌항의 값이 null을 return 할 경우 우항을 return 한다.
변수의 값이 null일 경우에만 값을 할당하는 기능이다.
void main(){
String name;
name ??= 'jinjin';
name ??= 'jinjinjin';
print(name); // jinjin;
}
타입에 대한 명칭을 매핑한다라고 생각한다.
List<int> reverseList(List<int> list) {
var reversed = list.reversed;
return reversed;
}
void main(){
print(reverseList([1,2,3,4]));
}
위와 같은 함수에 typedef를 사용하면
typedef IntList = List<int>;
IntList reverseList(IntList list) {
var reversed = list.reversed;
return reversed.toList();
}
void main(){
print(reverseList([1,2,3,4]));
}
이렇게 List에 대한 명칭을 매핑하여 변경해줄 수 있다.