Dart 提供 3 種 Collection,List 為其中之一,相當於 JavaScript 的 Array。
Version
Dart 3.3
Mutable List
void main() {
var list1 = [1, 2, 3];
var list2 = <int>[1, 2, 3];
List<int> list3 = [1, 2, 3];
list1.add(4); // add
list1[1] = 5; // edit
list1.removeAt(1); // delete
list1.length = 0; // delete all
list1.clear(); // delete all
print('list1: $list1');
}
- 可使用
var
的 Type Inference 宣告的 List 為 Mutable List var
亦可在等號右側加上<int>
限定 Mutable List 內 element 的 type- 亦可使用
List <int>
直接宣告 Mutable List 與 element 的 type - Mutable List 可自由地
新增
、修改
、刪除
與清空
List 內的 element - Dart 亦可使用如 JavaScript 的
.length = 0
清空 List
Immutable List
void main() {
var list1 = const [1, 2, 3];
const list2 = [1, 2, 3];
const list3 = <int>[1, 2, 3];
const List<int> list4 = [1, 2, 3];
list1.add(4); // X add
list1[0] = 1; // X edit
list1.removeAt(1); // X delete
list1.length = 0; // X delete all
list1.clear(); // X delete all
print('list1: $list1');
}
- 可加上
const
宣告為 Immutable List - Immutable List 無法對 List 內的 element
新增
、修改
、刪除
與清空
Fixed Length List
void main() {
var list1 = List.filled(3, 0);
list1.add(4); // X add
list1[0] = 1; // O edit
list1.removeAt(1); // X delete
list1.length = 0; // X delete all
list1.clear(); // X delete all
print('list1: $list1');
}
- Dart 另外提供
filled()
建立 Fixed Length List,可順便提供初始值
- Fixed Length List 無法
新增
、刪除
與清空
List 的 element,但可修改
Conclusion
- Dart 2 可使用
var list1 = new List()
方式建立 List,但 Dart 3 已經廢除 - Dart 亦可使用如 JavaScript 的
.length = 0
清空 List - 在使用上可將 List 當作 JavaScript 的 Array 使用,唯 Dart 還多了 Immutable List 與 Fixed Length List,這些是 JavaScript 所沒有的
- Immutable List 與 Fixed Length List 的差異在於是否
可修改