1.在所有 Dart 版本中综看,null 在未初始化的變量里都是默認值断部,所以你可以這樣簡化你的代碼
int? a = null
可以簡化為 int? a
String? name = "Jane";
String? address;
String?
表示可為空
2.要保護可能會為空的屬性的正常訪問批销,請在點(.)之前加一個問號(?)
例如 person?.house
person
如果是null 直接返回null,
等價于(person != null) ? person.house : null
- ??=
int? a;
print(a);
int? ab = 3;
a ??= 5; // ??= 為空才賦值 如果 a為空的時候給賦值5
ab ??= 5; // ab 有值所以不會賦值 所以ab還是3
- ??
int ? a;
int b = 1;
print(b ?? 3); //只會輸出1 不會為3 其實就是Swift的判空賦值
print(a ?? 12) //此時輸出為12
5.集合類型
final aListOfStrings = ["One","Two","Three","Four","Five"]; //list
final aSetOfStrings = {"One","Two","Three","Four","Five","One"}; // set 不允許有重復的元素
final aMapOfStringsToInts = {"One":1,"Two":2,"Three":3,"Four":4,"Five":5};
final aListOfInts = <int>[]; //手動指定類型
final aSetOfInts = <int>{};
final aMapOfIntToDouble = <int, double>{};
6.可選參數(shù) - 可選位置參數(shù)永遠放在方法參數(shù)列表的最后
int sumUpToFive(int a, [int? b, int? c, int? d, int? e]) {
int sum = a;
if (b != null) sum += b;
if (c != null) sum += c;
if (d != null) sum += d;
if (e != null) sum += e;
return sum;
}
- art函數(shù)聲明如果沒有顯式聲明返回值類型時會默認當做dynamic處理
//不指定返回類型傅蹂,此時默認為dynamic司志,不是bool
isNoble(int atomicNumber) {
return _nobleGases[atomicNumber] != null;
}