QQ Operator
?? 와 ?= 의 의미와 사용 방법
void main() {
String? name;
name ??= 'nico';
}
String capitalizeName(String? name) =>
name?.toUpperCase() ?? 'ANON';
??= 의 의미
: nullable 변수를 생성한 뒤 해당 변수가 null 이라면 nico 라는 값을 넣는다.
- left ?? right (name?.toUpperCase() ?? 'ANON';)
left 가 null 일 경우 right를 return
left 가 null 아닐 경우 left를 그대로 return
String? name;
print(name ?? 'Unknown'); // 'Unknown' 출력
name = 'John';
print(name ?? 'Unknown'); // 'John' 출력
- name != null ? name.toUpperCase() : 'ANON';
name 이 null 이 아니라면? toUpperCase() 로 넘어가고 그렇지 않으면? 'ANON'
String? name;
print(name != null ? name.toUpperCase() : 'ANON'); // 'ANON' 출력
name = 'John';
print(name != null ? name.toUpperCase() : 'ANON'); // 'JOHN' 출력
Typedef
typedef 는 자료형에 alias(별명)을 붙일 수 있게 하는 것으로 개발자가 원하는 만큼 생성 가능하다.
typedef UserInfo = Map<String, String>;
String sayHi(Map<String, String> userInfo) {
return "Hi ${userInfo['name']}";
}
typedef ListOfInts = List<int>;
ListOfInts reverseListOfNumbers(ListOfInts list) {
var reversed = list.reversed;
return reversed.toList();
}
void main() {
sayHi({"name" : 'nico'});
}
위 코드처럼 typedef 는 복잡한 타입이나 자주 쓰이는 타입의 별칭을 정의하여 코드의 가독성을 높이고 중복된 타입 선언을 줄여주는 데 사용한다. (해당 예시: Map<String, String> 을 UserInfo 로, List<int> 를 ListOfInts 로 별칭하여 사용함)
typedef 는 특히 복잡한 함수 타입이나 콜백 함수에 유용하게 사용할 수 있다!
'Dart' 카테고리의 다른 글
(Dart) Named Parameters (0) | 2024.10.16 |
---|---|
(Dart) Dart의 특징에 대해 알아보자 (0) | 2024.10.07 |
(Dart) final, late, const 키워드를 사용하여 변수 생성하기 (0) | 2024.10.06 |
(Dart) null safety 와 nullable 변수 (0) | 2024.10.06 |
(Dart) var, dynamic 키워드 (0) | 2024.10.06 |