**이 페이지에서 알 수 있는 내용
- QQ Operator
- QQ Equals (QQ Assignment Operator)**
QQ Operator는 **3항 연산자**처럼 값을 return 하는 연산자입니다.
왼쪽 ?? 오른쪽
왼쪽이 **null**이라면, 오른쪽을 return 합니다.
// QQ Operator
// 대문자로 바꿔주는 함수
String captalizeName(String? name) => name.toUpperCase();
// error message : The method 'toUpperCase' can't be unconditionally invoked because the receiver can be 'null'.
// null 값일지도 모르는데 대문자로 바꿀 수 없습니다.
// 해결 방법 1
// if
String capitalizeName1(String? name) {
if (name != null) {
// null값이 아니라면
return name.toUpperCase();
}
return 'DASH'; // null값이라면
}
// 해결 방법 2
// 3항 연산자 ? :
String capitalizeName2(String? name) =>
name != null ? name.toUpperCase() : 'DASH';
// 해결 방법 3 QQ Operator
String capitalizeName3(String? name) => name.toUpperCase() ?? 'DASH';
// error message : The method 'toUpperCase' can't be unconditionally invoked because the receiver can be 'null'.
// name이 nullable이면 해결됩니다.
String capitalizeName3(String? name) => name?.toUpperCase() ?? 'DASH';
void main() {
String upper, upper1, upper2, upper3;
upper = captalizeName('flutter');
print(upper); // FLUUTER 출력
upper = captalizeName(null);
// error message : The aregument type 'Null' can't be assigned to the parameter type 'String'
// parameter에 ? 추가하면 해결됩니다.
upper1 = capitalizeName1('Google');
upper2 = capitalizeName2('Firebase');
upper3 = capitalizeName3('Playstore');
}
왼쪽 ??= 오른쪽
‘왼쪽이 null 이라면 오른쪽 값을 왼쪽에 넣어라’ 입니다.
// QQ Equals
void main() {
String? name;
name ??= 'ordem';
name ??= 'another';
// warning message : The left operand can't be null
// 윗 줄에서 이미 null일때 ordem을 넣으라고 했고,
// 따라서 name은 null이 아니기 때문에 경고 메세지가 나왔습니다.
print(name);
}