Dart基礎語法<三> 操作符
阿新 • • 發佈:2020-12-30
技術標籤:Flutter學習筆記--Dart基礎語法篇dartflutter
本節主要記錄和Java用法有明顯差異的操作符。包括
- 型別判定操作符
- 賦值操作符
- 條件表示式
- 級聯操作符
- 安全操作符
型別判定操作符
as
、is
和is!
操作符是在執行時判定物件型別的操作符as
用於型別轉換,把物件轉換為特定的型別,如果無法完成轉換會丟擲一個異常is
如果物件是指定的型別返回 true ,類似Java中的instanceOf()
is!
如果物件是指定的型別返回false
void main() { //操作符 型別轉換 var i = 10; //不同於Java的(int)強轉 int j = i as int; //不同於java的instanceOf() if (i is int) { print(i); } //如果i不是整型 if (i is! int) { print(i); } }
#####賦值操作符
1.=
、+=
、\=
、*=
等賦值操作符與Java使用一致
2.??=
操作符用來指定值為 null 的變數值
void main() {
var s1, s2;
//保證s1不為null
if (null == s1) {
s1 = "Juice";
}
//s2為null時,賦值Juice,不為null時不執行操作
s2 ??= "Juice";
print(s1);
print(s2);
}
以上兩種輸出結果都是Juice,??=
更簡便一些
條件表示式
condition ? expr1 : expr2
三目表示式用法和Java一致expr1 ?? expr2
表示expr1
不為null
,返回其值,否則執行expr2
並返回其結果。
void main() {
var k;
var result = k ?? "Juice";
print(result);
}
輸出結果為Juice
級聯操作符
級聯操作符 (..
) 可以在同一個物件上連續呼叫多個函式以及訪問成員變數。
void test() { Builder builder = new Builder(); builder ..A() ..B() ..C(); } class Builder { void A() { print("這是方法A"); } String B() { var k = "這是方法B"; print(k); return k; } void C() { print("這是方法C"); } }
按照Java寫法,A() B() C()
三個方法返回值需要改為Builder物件,才能實現鏈式呼叫,但在Dart中可以通過級聯操作符 ..
直接實現(但是B()
方法返回值會被忽略)。
#####安全操作符
?.
操作符,如果操作物件為null
,則返回 null
void test1() {
String a;
//空指標異常
//print(a;.length);
//如果a為null,則返回null
print(a?.length);
}
輸出結果為null