帶你Dart帶你Diao之操作符

2021-09-12 09:40:49 字數 3373 閱讀 9367

筆者這次主要講的是dart 中定義的操作符,核心內容如下

操作符表

算術操作符

相等相關的操作符

賦值操作符

邏輯操作符

條件表示式

級聯操作符

其餘操作符

dart操作符.png

在上面的操作符**中所列的操作符都是按照優先順序順序從左到右,從上到下的方式來列出的,上面和左邊的操作符優先順序要高於下面和右邊的。例如%操作符優先順序高於 ==,而等號高於 &&。

算術操作符.png

這些都很簡單,唯一需要注意的乙個是'~/'和'/'一樣也表示除號,但它除過的結果是整數。

dart也是支援遞增、遞減字首和字尾操作

++var   var = var + 1 (該表示式的結果是var+1)

var++ var = var + 1 (該表示式的結果是var,下一次用到該變數時var的值是var+1)

--var var = var – 1 (該表示式的結果是var-1)

var-- var = var – 1 (該表示式的結果是var,下一次用到該變數時var的值是var-1)

關於遞增遞減這些操作的規則和其他大多數語言都是一樣的。

==  相等

!= 不等

> 大於

< 小於

>= 大於等於

<= 小於等於

要測試兩個物件代表的是否為同樣的內容,使用 == 操作符在某些情況下,你需要知道兩個物件是否是同乙個物件,使用identical()方法。as、 is、 和 is! 操作符是在執行時判定物件 型別的操作符

as  型別轉換

is 如果物件是指定的型別返回 true

is! 如果物件是指定的型別返回 false

只有當obj實現了t的介面,obj is t才是 true。例如 obj is object總是 true舉栗子

if (emp is person) 

//上述**簡寫

(emp as person).firstname = 'bob';

上面這兩個**效果是有區別的。如果emp是null或者不是person 型別, 則第乙個示例使用is則不會執行條件裡面的**,而第二個情況使用 as 則會丟擲異常。

使用 = 操作符來賦值。 但是還有乙個 ??= 操作符用來指定 值為 null的變數的值。

a = value;   // 給 a 變數賦值

b ??= value; // 如果 b 是 null,則賦值給 b;

// 如果不是 null,則 b 的值保持不變

!expr   對表示式結果取反(true 變為 false ,false 變為 true)

|| 邏輯 or

&& 邏輯 and

dart 有兩個特殊的操作符可以用來替代 if-else 語句:

condition ? expr1 : expr2

//栗子

var finalstatus = m.isfinal ? 'final' : 'not final';

如果 condition 是 true,執行 expr1 (並返回執行的結果),否則執行 expr2 並返回其結果。

expr1 ?? expr2

//栗子

string tostring() => msg ?? super.tostring();

如果 expr1 是 non-null,返回其值,否則執行 expr2 並返回其結果。

級聯操作符 (..) 可以在同乙個物件上連續呼叫多個函式以及訪問成員變數。使用級聯操作符可以避免建立臨時變數, 並且寫出來的**看起來更加流暢

queryselector('#button') // get an object.

..text = 'confirm' // use its members.

..classes.add('important')

..onclick.listen((e) => window.alert('confirmed!'));

第乙個方法 queryselector() 返回了乙個 selector 物件。 後面的級聯操作符都是呼叫這個物件的成員, 並忽略每個操作 所返回的值。

等價於這樣寫

var button = queryselector('#button');

button.text = 'confirm';

button.classes.add('important');

button.onclick.listen((e) => window.alert('confirmed!'));

可以看出來用級聯操作符可以避免建立了臨時變數,**看起來更簡潔。它還可以巢狀使用

final addressbook = (new addressbookbuilder()

..name = 'jenny'

..email = '[email protected]'

..phone = (new phonenumberbuilder()

..number = '415-555-0100'

..label = 'home')

.build())

.build();

嚴格來說, 兩個點的級聯語法不是乙個操作符。 只是乙個 dart 特殊語法

()      代表呼叫乙個方法

訪問 list 中特定位置的元素

. 訪問元素,例如 foo.bar 代表訪問 foo 的 bar 成員

?. 和 . 類似,但是左邊的操作物件不能為 null,例如 foo?.bar 如果 foo 為 null 則返回 null,否則返回 bar 成員

帶你認識作業系統

注意 作業系統的學習,不要固定在某一種自己常用的作業系統中,從而對作業系統的知識理解產生偏差。定義作業系統 operrating system 簡稱 os 是乙個管理計算機系統資源 控制程式執行的系統軟體,它為使用者提供了乙個方便 安全 可靠的工作環境和介面 目標 作用 單道批處理系統 多道批處理系...

帶你了解C 初階之引用

目錄 引用不是新定義乙個變數,而是給已存在變數取了乙個別名,語法理解上程式不會為引用變數開闢記憶體空間,它和它引用的變數共用同一塊記憶體空間 比如 李逵,在家稱為 鐵牛 江湖上人稱 黑旋風 型別 引用變數名 物件名 引用實體 int main 注意int main void testconstref...

JS 基礎篇之帶你走進JavaScript的函式

函式 function 是一段預定義好,並且可以被反覆使用的 塊。1 普通函式 function 函式名 2 帶參函式 function 函式名 引數列表 3 帶返回值的函式 function 函式名 引數列表 js中允許通過乙個變數來接受呼叫函式後的返回值,如var 變數名 函式名 實參列表 1 ...