如何在 Dart 中创建特定 class 类型的对象列表?

How to create a list of objects of certain class type in Dart?

我在 Python 3.x:

中有这个代码
_VectorOf = lambda ownerObj,classType,scope: [classType(ownerObj) for i in scope]

此代码创建 "classType" 个对象的列表。"classType" 是用户传递的任何 class。

在 Dart 2 中会怎样7.x?如果可能的话,我不想使用 "dart:mirrors"。

提前致谢。

List<T> vectorOf<T>(int length, T createObject()) => 
    [for (var i = 0; i < length; i++) createObject()];

要创建对象,就得说怎么创建。

类型不够。它 可能 对于 dart:mirrors 就足够了,但前提是该类型实际上有一个构造函数。而且它根本就是一个 class 类型,而不是函数类型或 FutureOr<void> 或其他根本不能有构造函数的类型。

例如:

var listOfStringLists = vectorOf(12, () => <String>[]);

这将创建一个长度为 12 的列表,其中每个元素都是一个新的空字符串列表。

如果你需要用一个额外的参数来参数化工厂函数,那么你只需要手动传递它:

List<T> vectorOf<T, O>(int length, O owner, T createObject(O owner)) => 
    [for (var i = 0; i < length; i++) createObject(owner)];

这将在每次调用时将 owner 对象作为参数传递给 factory。 另一种选择是:

List<T> vectorOf<T, O>(int length, O owner, T createObject(O owner)) =>
    List<T>.generate(length, (_) => createObject(owner));

您在其中使用了 List.generate 构造函数,但忽略了它传递给其工厂函数的索引。