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

2024-06-06 20:54:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python 3.x中有以下代码:

_VectorOf = lambda ownerObj,classType,scope: [classType(ownerObj) for i in scope]

这段代码创建一个“classType”对象列表。“classType”是用户传递的任何类

在Dart 2.7.x中会是什么样子?如果可能的话,我不想使用“飞镖:镜子”

提前谢谢


Tags: 对象lambda代码用户in列表forscope
1条回答
网友
1楼 · 发布于 2024-06-06 20:54:38
List<T> vectorOf<T>(int length, T createObject()) => 
    [for (var i = 0; i < length; i++) createObject()];

如果你想创建一个对象,你必须说明如何创建它

这种类型是不够的。如果使用dart:mirrors,它可能就足够了,但前提是该类型实际上有一个构造函数。它是一种类类型,而不是函数类型或FutureOr<void>或其他不能有构造函数的类型

例如:

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

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

如果需要使用额外参数参数化factory函数,则只需手动将其传递:

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构造函数,但忽略传递给其工厂函数的索引

相关问题 更多 >