我似乎无法掌握这两种List初始化。这是代码:
=~
这里的a和b有什么区别?同样,a.runtimetype显示JsonArray,而b.runtimetype显示Null。为什么?
答案 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>
。