筆者這次主要講的是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! 操作符是在執行時判定物件 型別的操作符== 相等
!= 不等
> 大於
< 小於
>= 大於等於
<= 小於等於
只有當obj實現了t的介面,obj is t才是 true。例如 obj is object總是 true舉栗子as 型別轉換
is 如果物件是指定的型別返回 true
is! 如果物件是指定的型別返回 false
上面這兩個**效果是有區別的。如果emp是null或者不是person 型別, 則第乙個示例使用is則不會執行條件裡面的**,而第二個情況使用 as 則會丟擲異常。if (emp is person)
//上述**簡寫
(emp as person).firstname = 'bob';
使用 = 操作符來賦值。 但是還有乙個 ??= 操作符用來指定 值為 null的變數的值。
a = value; // 給 a 變數賦值
b ??= value; // 如果 b 是 null,則賦值給 b;
// 如果不是 null,則 b 的值保持不變
dart 有兩個特殊的操作符可以用來替代 if-else 語句:!expr 對表示式結果取反(true 變為 false ,false 變為 true)
|| 邏輯 or
&& 邏輯 and
如果 condition 是 true,執行 expr1 (並返回執行的結果),否則執行 expr2 並返回其結果。condition ? expr1 : expr2
//栗子
var finalstatus = m.isfinal ? 'final' : 'not final';
如果 expr1 是 non-null,返回其值,否則執行 expr2 並返回其結果。expr1 ?? expr2
//栗子
string tostring() => msg ?? super.tostring();
級聯操作符 (..) 可以在同乙個物件上連續呼叫多個函式以及訪問成員變數。使用級聯操作符可以避免建立臨時變數, 並且寫出來的**看起來更加流暢
第乙個方法 queryselector() 返回了乙個 selector 物件。 後面的級聯操作符都是呼叫這個物件的成員, 並忽略每個操作 所返回的值。queryselector('#button') // get an object.
..text = 'confirm' // use its members.
..classes.add('important')
..onclick.listen((e) => window.alert('confirmed!'));
等價於這樣寫
可以看出來用級聯操作符可以避免建立了臨時變數,**看起來更簡潔。它還可以巢狀使用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 = 'jenny@example.com'
..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 ...