是否可以在Dart中的一行初始化列表?像下面这样的东西......
List<int> options = new List<int>{ 1,2,5,9 };
Run Code Online (Sandbox Code Playgroud)
(这在c#中是可能的并且被称为集合初始化器)
Dar*_*tle 23
是:
List<int> options = [1, 2, 5, 9];
Run Code Online (Sandbox Code Playgroud)
我建议阅读:
小智 19
是的,您可以使用List.unmodifiable构造函数来实现:
var options = new List.unmodifiable([3,6,7,8]);
Run Code Online (Sandbox Code Playgroud)
或者通过使用 List.from构造函数:
var options = new List.from([3,6,7,8]);
Run Code Online (Sandbox Code Playgroud)
或者就像这样:
var options = [5,7,9,0];
Run Code Online (Sandbox Code Playgroud)
还有可用的List.filled和List.generate工厂构造函数:
List<int?> s = List.filled(5, 10, growable: true); // [10, 10, 10, 10, 10]
Run Code Online (Sandbox Code Playgroud)
这将创建长度为 5、类型为 int 或 null 的列表,并将每个元素初始化为 10。该列表是可增长的,这意味着可以使用 setter 更改其长度:
s.length = 10;
s[8] = 2; // [10, 10, 10, 10, 10, null, null, null, 2, null]
Run Code Online (Sandbox Code Playgroud)
更改列表长度后,新元素将被初始化为 null。如果列表元素类型不可为空,这将导致异常。
List.generate生成值列表。
var n = List.generate(5, (index) => 0); // [0, 0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)
创建的列表是固定长度的,每个元素设置为0。
List<int?> n = List.generate(5, (index) => index * index, growable: true); // // [0, 1, 4, 9, 16]
Run Code Online (Sandbox Code Playgroud)
如果我们想创建可增长列表(即我们将growable设置为true),我们需要显式选择不可为空的类型,例如。整数?正如我们在这里所做的那样,否则增加列表长度将引发异常。这代表 List.generate 和 List.filled 工厂。
关于这些的好读物是:
https://api.dart.dev/stable/1.24.3/dart-core/List/List.generate.html 和 https://api.dart.dev/stable/1.24.3/dart-core/List/列表.filled.html
| 归档时间: |
|
| 查看次数: |
7606 次 |
| 最近记录: |