【发布时间】:2020-03-24 23:42:34
【问题描述】:
我在 dart 中有一个列表,我想用 n 相同元素的编号初始化列表。
示例:- 用元素 5 初始化整数列表 4 次。
List<int> temp = [5,5,5,5];
在 dart Flutter 中初始化列表有哪些不同的方法?
【问题讨论】:
我在 dart 中有一个列表,我想用 n 相同元素的编号初始化列表。
示例:- 用元素 5 初始化整数列表 4 次。
List<int> temp = [5,5,5,5];
在 dart Flutter 中初始化列表有哪些不同的方法?
【问题讨论】:
我能想到的最简单的方法是:List.filled(int length, E fill, { bool growable: false })。
参数是:
所以你可以:
List<int> zeros = List.filled(10, 0)
这将创建一个包含十个零的列表。
您需要注意的一个问题是,如果您使用对象来初始化列表,例如:
SomeObject a = SomeObject();
List<SomeObject> objects = List.filled(10, a);
上面创建的列表将在所有位置上具有对象 a 的相同实例。 如果你想在每个位置都有新的对象,你可以使用:
List.generate(int length, E generator(int index), {bool growable:true})
类似:
List<SomeObject> objects = List<SomeObject>.generate(10, (index) => SomeObject(index);
或者:
List<SomeObject> objects = List<SomeObject>.generate(10, (index) {
SomeOjbect obj = SomeObject(index)
obj.id= index;
return obj;
});
这将为列表中的每个位置创建一个新实例。初始化对象的方式取决于您。
【讨论】:
this 关键字会起作用吗?
【讨论】:
这是已接受答案的简化版本。您可以使用列表文字、填充列表或生成的列表:
final literal = [5, 5, 5, 5];
final filled = List.filled(4, 5);
final generated = List.generate(4, (index) => 5);
print(literal); // [5, 5, 5, 5]
print(filled); // [5, 5, 5, 5]
print(generated); // [5, 5, 5, 5]
当您只想用相同的值填充列表时,List.filled 很好。除非你真的想要[5, 5, 5, 5]。在这种情况下,只需使用列表文字。它易于阅读和理解。
【讨论】: