Just My Life & My Work

[Flutter] 問號纇運算符

善用運算符號,可以減少寫些程式碼。在使用之前,必須了解它是怎麼運作,之後就能得心應手囉~

我目前只會 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');
}

.

以上,就是今日的課程,期待未來會遇到可用的情境!😀

參考:What are ??, ??=, ?., …? in Dart?

廣告

隨意留個言吧:)~

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

標籤雲

%d 位部落客按了讚: