Dart 支持常用的運(yùn)算運(yùn)算符,如下表所示:
Operator | Meaning |
---|---|
+ | Add |
– | Subtract |
-expr | Unary minus, also known as negation (reverse the sign of the expression) |
* | Multiply |
/ | Divide |
~/ | Divide, returning an integer result |
% | Get the remainder of an integer division (modulo) |
示例:
assert(2 + 3 == 5);
assert(2 - 3 == -1);
assert(2 * 3 == 6);
assert(5 / 2 == 2.5); // 結(jié)果是雙浮點(diǎn)型
assert(5 ~/ 2 == 2); // 結(jié)果是整型
assert(5 % 2 == 1); // 余數(shù)
assert('5/2 = ${5 ~/ 2} r ${5 % 2}' == '5/2 = 2 r 1');
Dart 還支持前綴和后綴,自增和自減運(yùn)算符。
Operator | Meaning |
---|---|
++var | var = var + 1 (expression value is var + 1 ) |
var++ | var = var + 1 (expression value is var ) |
--var | var = var – 1 (expression value is var – 1 ) |
var-- | var = var – 1 (expression value is var ) |
示例:
var a, b;
a = 0;
b = ++a; // a自加后賦值給b。
assert(a == b); // 1 == 1
a = 0;
b = a++; // a先賦值給b后,a自加。
assert(a != b); // 1 != 0
a = 0;
b = --a; // a自減后賦值給b。
assert(a == b); // -1 == -1
a = 0;
b = a--; // a先賦值給b后,a自減。
assert(a != b); // -1 != 0
下表列出了關(guān)系運(yùn)算符及含義:
Operator | Meaning |
---|---|
== | Equal; see discussion below |
!= | Not equal |
> | Greater than |
< | Less than |
>= | Greater than or equal to |
<= | Less than or equal to |
要測試兩個對象x和y是否表示相同的事物, 使用 == 運(yùn)算符。 (在極少數(shù)情況下, 要確定兩個對象是否完全相同,需要使用 identical() 函數(shù)。) 下面給出 == 運(yùn)算符的工作原理:
這里列出了每種關(guān)系運(yùn)算符的示例:
assert(2 == 2);
assert(2 != 3);
assert(3 > 2);
assert(2 < 3);
assert(3 >= 3);
assert(2 <= 3);
as, is, 和 is! 運(yùn)算符用于在運(yùn)行時處理類型檢查:
Operator | Meaning |
---|---|
as | Typecast (也被用于指定庫前綴) |
is | True if the object has the specified type |
is! | False if the object has the specified type |
例如, obj is Object 總是 true。 但是只有 obj 實(shí)現(xiàn)了 T 的接口時, obj is T 才是 true。
使用 as 運(yùn)算符將對象強(qiáng)制轉(zhuǎn)換為特定類型。 通常,可以認(rèn)為是 is 類型判定后,被判定對象調(diào)用函數(shù)的一種縮寫形式。 請考慮以下代碼:
if (emp is Person) {
// Type check
emp.firstName = 'Bob';
}
使用 as 運(yùn)算符進(jìn)行縮寫:
(emp as Person).firstName = 'Bob';
提示: 以上代碼并不是等價的。 如果 emp 為 null 或者不是 Person 對象, 那么第一個 is 的示例,后面將不回執(zhí)行; 第二個 as 的示例會拋出異常。
更多建議: