如何在 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
构造函数,但忽略了它传递给其工厂函数的索引。
我在 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
构造函数,但忽略了它传递给其工厂函数的索引。