操作符類型表
全文均摘錄梳理自Dart中文網(wǎng)
| 描述 |
操作符 |
| unary postfix |
expr++ expr-- () [] . ?. |
| unary prefix |
-expr !expr ~expr ++expr --expr |
| multiplicative |
* / % ~/ |
| additive |
+ - |
| shift |
<< >> |
| bitwise AND |
& |
| bitwise XOR |
^ |
| bitwise OR |
| |
| relational and type test |
>= > <= < as is is! |
| equality |
== != |
| logical AND |
&& |
| logical OR |
|| |
| if null |
?? |
| conditional |
expr1 ? expr2 : expr3 |
| cascade |
.. |
| assignment |
= *= /= ~/= %= += -= <<= >>= &= ^= ??= |
算術操作符
| 操作符 |
解釋 |
示例 |
| + |
加號 |
assert(2 + 3 == 5) |
| - |
減號 |
assert(3 - 2 == 1) |
| -expr |
負號 |
assert(2 - 3 == -1) |
| * |
乘號 |
assert(2 * 3 == 6) |
| / |
除號 |
assert(6 / 2 == 3) |
| ~/ |
除號,但是返回值為整數(shù) |
assert(5 ~/ 2 == 2) |
| % |
取模 |
assert(5 % 2 == 1) |
類型判定的操作符
| 操作符 |
解釋 |
| as |
類型轉換 |
| is |
如果對象是指定的類型返回 True |
| is! |
如果對象是指定的類型返回 False |
if (emp is Person) { // Type check
emp.firstName = 'Bob';
}
//使用 as 操作符可以簡化上面的代碼:
(emp as Person).firstName = 'Bob';
注意: 上面這兩個代碼效果是有區(qū)別的。如果 emp 是 null 或者不是 Person 類型, 則第一個示例使用 is 則不會執(zhí)行條件里面的代碼,而第二個情況使用 as 則會拋出一個異常。
賦值操作符
"="表示賦值
a = value; // 給 a 變量賦值
b ??= value; // 如果 b 是 null,則賦值給 b;如果不是 null,則 b 的值保持不變
復合賦值操作符
//以 `+=` 舉例
`a += b` 等同于 ` a = a + b`
邏輯操作符
| 操作符 |
邏輯 |
| !expr |
對表達式結果取反(true 變?yōu)?false ,false 變?yōu)?true) |
| || |
邏輯 OR |
| && |
邏輯 AND |
其他操作符
| Operator |
Name |
Meaning |
| () |
使用方法 |
代表調(diào)用一個方法 |
| [] |
訪問 List |
訪問 list 中特定位置的元素 |
| . |
訪問 Member |
訪問元素,例如 foo.bar 代表訪問 foo 的 bar 成員 |
| ?. |
條件成員訪問 |
和 . 類似,但是左邊的操作對象不能為 null,例如 foo?.bar 如果 foo 為 null 則返回 null,否則返回 bar 成員 |