flutter - 列表/数组初始化的更好实践
问题描述
在创建非空空列表或数组时,建议在这两者之间。
List newList = List();
List<Obstacle> obstacles = List<Obstacle>();
或者
List newList = [];
List<Obstacle> obstacles = [];
或者它们都做完全相同的事情并对处理和记忆产生相同的影响。
解决方案
声明式与文字构造函数
[]
据我所知,使用文字构造函数和声明性构造函数之间没有任何区别List()
。
两者都有相同的结果,但我建议您使用声明式List()
构造函数。因为字面量构造函数用于预定义列表中的一些值。喜欢:List myList = [1,2,3];
。
因此,如果要创建非空列表,请使用:
List myList = List();
但是,如果您想为列表定义一些初始值,请使用文字构造函数:
List myList = [1,2,3];
泛型
快速信息:列表是泛型,地图也是泛型。
泛型基本上是当您想要将对象类型作为参数传递给类或函数或类型定义时。聪明的程序员使用它来编写可重用的代码。
例如,我有一个Response
在我的应用程序中使用的类,Response
该类有一个数据变量。但我希望它能够告诉 DartResponse
类在哪里携带data
类型String
或数据类型int
。
所以为了实现这一点,我会让我的Response
班级成为Generic
.
这是一个通用响应类的示例。数据变量可以根据需要在我的应用程序中的任何情况下设置。
Response<String> response = Response<String>();
//Defining a Generic's type is optional.
//So both statements work.
Response response = Response();
class Response<T> {
T data;
}
为什么是泛型? 这样你就得到了 Dart 惊人的静态编译安全特性。泛型提供了在多种情况下重用类的灵活性,但仍为您提供强大的编译安全性。
因此,在声明 a 时,List
如果您定义它是 a List<int>
。编译器将确保您不会意外尝试String
在其中插入 a。
推荐阅读
- php - PHP - 将新对象添加到每个对象数组
- python - AttributeError:“MeshPlotter”对象没有属性“tk”
- reactjs - 使用键时组件复制
- javascript - 如何在代码顶部定义公会以在其他功能中使用
- html - Html:BarbaJS 滑块过渡
- ubuntu - NGINX Ingress 创建 NodePort 而不是 LoadBalancer
- python - Zipline 安装问题/交易演变的第一个回测错误
- c++ - 检查给定的整数组是否包含 0 值
- reactjs - 我将如何在 Typescript 中创建反应路由器?
- javascript - javaScript_Recursive_Function _function sumToOne(num)