語(yǔ)法糖 ?. 與 ??
dart 語(yǔ)法糖 ?.
它的意思是左邊如果為空返回 null,否則返回右邊的值。
A?.B
如果 A 等于 null,那么 A?.B 為 null
如果 A 不等于 null拗盒,那么 A?.B 等價(jià)于 A.B
void main() {
Animal animal = new Animal('cat');
Animal empty = null;
//animal 非空,返回 animal.name 的值 cat
print(animal?.name);
//empty 為空惊楼,返回 null
print(empty?.name);
//animal 非空狰右,可以直接訪問(wèn) animal.name 的值 cat
print(animal.name);
//empty 為空杰捂,拋出異常
print(empty.name);
}
class Animal {
final String name;
Animal(this.name);
}
運(yùn)行后會(huì)看到如下輸出:
cat
null
cat
Uncaught exception:
Cannot read property 'get$name' of null
dart 語(yǔ)法糖 ??
它的意思是左邊如果為空返回右邊的值棋蚌,否則不處理琼娘。
A??B
如果 A 等于 null,那么 A??B 為 B
如果 A 不等于 null附鸽,那么 A??B 為 A
以上面為例子,假設(shè)我們上面要求當(dāng) empty 為空時(shí)瞒瘸,默認(rèn)值輸出 unknown坷备。
那么可以修改如下:
//empty 為空,返回 null
print(empty?.name);
改為:
//empty 為空情臭,本來(lái)要返回 null省撑,由于有 ??赌蔑,返回 unknown
print(empty?.name??'unknown')
b ??= 'hello';
如果b為null的情況下,b等于hello竟秫。如果不為null則不作任何操作
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者