Dart 使用 bool 類型表示布爾值。 Dart 只有字面量 true and false 是布爾類型, 這兩個(gè)對(duì)象都是編譯時(shí)常量。
Dart 的類型安全意味著不能使用 if (nonbooleanValue) 或者 assert (nonbooleanValue)。 而是應(yīng)該像下面這樣,明確的進(jìn)行值檢查:
// 檢查空字符串。
var fullName = '';
assert(fullName.isEmpty);
// 檢查 0 值。
var hitPoints = 0;
assert(hitPoints <= 0);
// 檢查 null 值。
var unicorn;
assert(unicorn == null);
// 檢查 NaN 。
var iMeantToDoThis = 0 / 0;
assert(iMeantToDoThis.isNaN);
幾乎每種編程語言中最常見的集合可能是 array 或有序的對(duì)象集合。 在 Dart 中的 Array 就是 List 對(duì)象, 通常稱之為 List 。
Dart 中的 List 字面量非常像 JavaScript 中的 array 字面量。 下面是一個(gè) Dart List 的示例:
var list = [1, 2, 3];
提示: Dart 推斷 list
的類型為 List<int>
。 如果嘗試將非整數(shù)對(duì)象添加到此 List 中, 則分析器或運(yùn)行時(shí)會(huì)引發(fā)錯(cuò)誤。 有關(guān)更多信息,請(qǐng)閱讀 類型推斷。
Lists 的下標(biāo)索引從 0 開始,第一個(gè)元素的索引是 0。 list.length - 1 是最后一個(gè)元素的索引。 訪問 List 的長度和元素與 JavaScript 中的用法一樣:
var list = [1, 2, 3];
assert(list.length == 3);
assert(list[1] == 2);
list[1] = 1;
assert(list[1] == 1);
在 List 字面量之前添加 const 關(guān)鍵字,可以定義 List 類型的編譯時(shí)常量:
var constantList = const [1, 2, 3];
// constantList[1] = 1; // 取消注釋會(huì)引起錯(cuò)誤。
List 類型包含了很多 List 的操作函數(shù)。 更多信息參考 泛型 和 集合.
在 Dart 中 Set 是一個(gè)元素唯一且無序的集合。 Dart 為 Set 提供了 Set 字面量和 Set 類型。
版本提示: 雖然 Set 類型 一直是 Dart 的核心部分, 但在 Dart2.2 中才引入了 Set 字面量 。
下面是通過字面量創(chuàng)建 Set 的一個(gè)簡單示例:
var halogens = {'fluorine', 'chlorine', 'bromine', 'iodine', 'astatine'};
Note: Dart 推斷 halogens
類型為 Set<String>
。如果嘗試為它添加一個(gè) 錯(cuò)誤類型的值,分析器或執(zhí)行時(shí)會(huì)拋出錯(cuò)誤。更多內(nèi)容,參閱 類型推斷。
要?jiǎng)?chuàng)建一個(gè)空集,使用前面帶有類型參數(shù)的 {} ,或者將 {} 賦值給 Set 類型的變量:
var names = <String>{};
// Set<String> names = {}; // 這樣也是可以的。
// var names = {}; // 這樣會(huì)創(chuàng)建一個(gè) Map ,而不是 Set 。
是 Set 還是 Map ? Map 字面量語法同 Set 字面量語法非常相似。 因?yàn)橄扔械?Map 字母量語法,所以 {}
默認(rèn)是 Map
類型。 如果忘記在 {}
上注釋類型或賦值到一個(gè)未聲明類型的變量上, 那么 Dart 會(huì)創(chuàng)建一個(gè)類型為 Map<dynamic, dynamic>
的對(duì)象。
使用 add() 或 addAll() 為已有的 Set 添加元素:
var elements = <String>{};
elements.add('fluorine');
elements.addAll(halogens);
使用 .length 來獲取 Set 中元素的個(gè)數(shù):
var elements = <String>{};
elements.add('fluorine');
elements.addAll(halogens);
assert(elements.length == 5);
在 Set 字面量前增加 const ,來創(chuàng)建一個(gè)編譯時(shí) Set 常量:
final constantSet = const {
'fluorine',
'chlorine',
'bromine',
'iodine',
'astatine',
};
// constantSet.add('helium'); // Uncommenting this causes an error.
更多關(guān)于 Set 的內(nèi)容,參閱 Generic 及 Set。
更多建議: