善用運算符號,可以減少寫些程式碼。在使用之前,必須了解它是怎麼運作,之後就能得心應手囉~
我目前只會 IF ELSE 來使用問號運算符,趁這時候多學點語法糖,讓我可少寫幾行程式碼,也可達到些成就感。🙃
Flutter 是以 Dart 程式語言來運行,線上可以直接測試程式碼:https://dartpad.dartlang.org/
??
也稱為空運算符(null operator)。 此運算符返回其左側的表達式,除非它為空,如果為空,則返回右側的表達式:
void main() {
print(0 ?? 1); // <- 0
print(1 ?? null); // <- 1
print(null ?? null); // <- null
print(null ?? null ?? 2); // <- 2
}
.
??=
也稱為空感知賦值(null-aware assignment)。此運算符為其左側的變量賦值,僅當該變量當前為 null 時:
void main() {
int value;
print(value); // <- null
value ??= 5;
print(value); // <- 5, changed from null
value ??= 6;
print(value); // <- 5, no change
}
.
?.
也稱為空感知訪問(null-aware access(method invocation))。 此運算符通過嘗試訪問可能為 null 的對象的屬性或方法來防止應用程式崩潰:
void main() {
String value; // <- value is null
print(value.toLowerCase()); // <- will crash
print(value?.toLowerCase().toUpperCase()); // <- will crash
print(value?.toLowerCase()?.toUpperCase()); // <- output is null
}
.
…?
也稱為空感知擴展運算符(null-aware spread operator)。 此運算符可防止使用擴展運算符添加空元素(允許將多個元素添加到集合中):
void main() {
List list = [1, 2, 3];
List list2; // <- list2 is null
print(['chocolate', …?list2]); // <- [chocolate]
print([0, …?list2, …list]); // <- [0, 1, 2, 3]
print(['cake!', …list2]); // <- will crash
}
.
?
三元運算符在多種語言中使用。
expression ? option1 : option2
如果表達式為真,則選項 1 ,否則與選項 2。
void main() {
print(2 == 2 ? "a truth" : "a lie"); // <- a truth
print(1 == 2 ? "a truth" : "a lie"); // <- a lie
5 == 6 ? doThis() : doThat(); // <- done that
}
void doThis() {
print('done this');
}
void doThat() {
print('done that');
}
.
以上,就是今日的課程,期待未來會遇到可用的情境!😀
隨意留個言吧:)~