戳这里了解《Flutter入门与实战》专栏,持续更新、系统学习!
前言
集合是应用程序中最为厂家的数据结构,Dart 一共支持如下四种集合,其中核心的 List
, Map
和 Set
在基础框架中,而 Queue
在 dart:collection
库定义。
- 列表:也就是 List 类,可动态增长的数组;
- key-value 集:即 Map<K, V> 类,用于存储键值对;
- 队列:即 Queue类;
- 集合:即Set类,集合中的元素不可重复。
本篇介绍集合的最佳实践。
优先使用集合的特有语法
对于核心的集合类List
, Map
和 Set
,由于经常使用,Dart 为这些类提供的内置的语法来快速构建这些集合对象。
// 推荐用法
var points = <Point>[];
var addresses = <String, Address>{};
var counts = <int>{};
// 不推荐
var addresses = Map<String, Address>();
var counts = Set<int>();
集合还有一些特殊的用法,比如使用展开操作符(而且同时支持 ? 操作符判断是否为空)将一个集合加入到另一个集合。同时还支持结合 if 和 for 来在控制元素的加入。
// 推荐用法
var arguments = [
...options,
command,
...?modeFlags,
for (var path in filePaths)
if (path.endsWith('.dart'))
path.replaceAll('.dart', '.js')
];
// 不推荐
var arguments = <String>[];
arguments.addAll(options);
arguments.add(command);
if (modeFlags != null) arguments.addAll(modeFlags);
arguments.addAll(filePaths
.where((path) => path.endsWith('.dart'))
.map((path) => path.replaceAll('.dart', '.js')));
上面的推荐用法其实除了展开操作符以外,使用 if 和 for