操作符
一元后置操作符:expr++ ?? expr-- ?? () ?? [] ?? . ?? ?.
一元前置操作符:-expr ?? !expr ?? ~expr ?? ++expr ?? --expr
乘除運算:* ?? / ?? % ?? ~/
加減運算:+ ?? -
移位運算:<< ?? >>
按位與:&
按位異或:^
按位或:|
關(guān)系和類型測試:>= ?? > ?? <= ?? < ?? as ?? is ?? is!
相等:== ?? 混坞!=
邏輯與:&&
邏輯或:||
是否為:null??
天健判斷(三元運算):expr1 ? expr2 : expr3
級聯(lián):..
賦值:= ?? *= ?? /= ?? ~/= ?? %= ?? += ?? -= ?? <<= ?? >>= ?? &= ?? ^=
當您使用操作符時狐援,您將創(chuàng)建表達式钢坦,如:a+b,a-b啥酱,a*b 爹凹,a/b,c ?镶殷?a:b禾酱,a is A?
上面的操作符依次排列下來?每一個運算符的優(yōu)先級都高于排在自己后邊的運算符。例如乘除運算中運算符%的優(yōu)先級高于(并在之前執(zhí)行)相等判斷運算符==批钠,相等(==)判斷運算符的優(yōu)先級又高于邏輯與運算符&&宇植,遵循左到右規(guī)則
算術(shù)運算符:+加法,-減法,-expr一元減號,也稱為否定(與表達式的符號相反),*乘法,/除法,~/取模運算,%取余運算;Dart還支持前綴和后綴遞增和遞減運算符埋心。
++varvar = var + 1 (表達式的值是 var + 1)
var++var = var + 1 (表達式的值是 var)
--varvar = var – 1 (表達式的值是 var – 1)
var--var = var – 1 (表達式的值是 var)
相等和關(guān)系運算符:==相等,!=不等,>大于,<小于,>=大于等于,<=小于等于,要測試兩個對象x和y是否代表相同的東西指郁,請使用==操作符,(在需要知道兩個對象是否完全相同的情況下,可以使用identical()函數(shù))拷呆。
類型測試操作符:as, is, and is!操作符可以方便地在運行時檢查類型闲坎。as形態(tài)轉(zhuǎn)換,is如果對象具有指定的類型,則為True,is!如果對象具有指定的類型茬斧,則為False
賦值操作符:可以使用=操作符來賦值腰懂。若要僅僅為非空的變量賦值請使用??=操作符。如a项秉?绣溜?=b;僅僅在a為空的情況下a被賦值b否則a的值不變娄蔼;
邏輯運算符:可以使用邏輯運算符組合布爾表達式或取反布爾表達式,!expr對!后的表達式結(jié)果取反(如果表達式結(jié)果為false則表達式前加怖喻!使其變?yōu)閠rue,反之亦然),||邏輯或,&&邏輯與(且)
位和移位運算:&按位與,|按位或,^按位異或,~expr按位取反,<<左移,>>右移
條件表達式:Dart有兩個運算符岁诉,可以讓你精確地計算那些可能需要if-else語句的表達式:condition ? expr1 : expr2如果條件為真锚沸,則計算expr1(并返回其值);否則,計算并返回expr2的值涕癣。expr1 ?? expr2如果expr1是非空的哗蜈,則返回其值;否則,計算并返回expr2的值坠韩。當您需要基于布爾表達式的結(jié)果選擇賦值距潘,請考慮使用??:?。如果布爾表達式只想判斷值是否為null只搁,請考慮使用????绽昼。
級聯(lián)表示法 (..):允許您在同一個對象上創(chuàng)建一個操作序列。除了函數(shù)調(diào)用之外须蜗,您還可以訪問同一對象上的字段硅确。這通衬扛龋可以省去創(chuàng)建臨時變量的步驟,能使你更為流暢的寫代碼菱农。注意:嚴格地說缭付,級聯(lián)的“..”表示法不是運算符。這只是Dart語法的一部分循未。
其他運算符:()功能函數(shù)表示一個函數(shù)調(diào)用陷猫,[]訪問列表引用列表中指定索引處的值,.訪問成員表示表達式的屬性; ?.根據(jù)條件訪問成員和(.)相似的妖,但是左邊的操作數(shù)可以為空绣檬;例如: a?.name 從a的表達式中選擇name屬性,如果a為空則返回null