Dart中两种类型的List初始化之间的区别

时间:2019-06-16 04:04:27

标签: list dart

我似乎无法掌握这两种List初始化。这是代码:

=~

这里的a和b有什么区别?同样,a.runtimetype显示JsonArray,而b.runtimetype显示Null。为什么?

1 个答案:

答案 0 :(得分:1)

除了第一个被初始化,第二个没有被初始化之外,两者都相同。

the doc说:

  

未初始化的变量的初始值为null。甚至数字类型的变量最初都为null,因为数字(与Dart中的所有其他内容一样)都是对象。

因此,任何未初始化的var都将隐式地具有null值,如我们所知,Dart中的null也是类型Null的对象。

void main() {
  String c;
  int d;
  Symbol e;
  print(c.runtimeType);
  print(d.runtimeType);
  print(e.runtimeType);
}

以上所有runtimeType都将打印Null。而且,如果您正确初始化b变量,它将同样显示JSArray<foo>

void main() {
  final a = List<foo>() ;
  List<foo> b = [foo()];

  print(a.runtimeType); 
  print(b.runtimeType); 
}

关于打印的JSArray<foo>,您可能正在DartPad上运行或将其作为Dart编译为JS的Web应用程序运行。如果您在本地将其作为服务器端或客户端应用程序运行,它将打印List<foo>