如何在Dart中创建空地图
我总是忘记如何在 Dart 中创建一个空地图。这不起作用:
final myMap = Map<String, dynamic>{};
还行吧:
final myMap = Map<String, dynamic>();
但我收到警告,要求尽可能使用集合文字。
我将在下面添加我的答案,以便下次我忘记时它会出现在这里。
回答
您可以Map使用地图文字创建一个空的:
{}
但是,如果类型未知,它将默认为Map<dynamic, dynamic>,这会破坏类型安全。为了指定局部变量的类型,您可以这样做:
final myMap = <String, int>{};
而对于非局部变量,可以使用类型注解形式:
Map<String, int> myMap = {};
笔记:
- 尽可能使用集合文字。
- 省略局部变量的类型注释。
回答
这是我记住语法的方式:
{}是文字,并()执行调用1。T{}是非法语法,并为T()调用未命名的构造函数T。不要紧,什么T是,无论是Map<K, V>或String或任何其他类。
{}是一个字面量,但什么样的字面量?它是一个Set还是一个Map?要区分它们,您应该表示类型。表示泛型类型的方法是将类型放在尖括号中:<K, V>{}for aMap<K, V>和<E>{}for a Set<E>。
这同样适用于ListS:[]是文字,也可以指定与尖括号类型:<E>[]。
1显然还有许多其他用途{}和()在其他上下文中。