2024-06-06 20:54:38 发布
网友
我在Python 3.x中有以下代码:
_VectorOf = lambda ownerObj,classType,scope: [classType(ownerObj) for i in scope]
这段代码创建一个“classType”对象列表。“classType”是用户传递的任何类
在Dart 2.7.x中会是什么样子?如果可能的话,我不想使用“飞镖:镜子”
提前谢谢
List<T> vectorOf<T>(int length, T createObject()) => [for (var i = 0; i < length; i++) createObject()];
如果你想创建一个对象,你必须说明如何创建它
这种类型是不够的。如果使用dart:mirrors,它可能就足够了,但前提是该类型实际上有一个构造函数。它是一种类类型,而不是函数类型或FutureOr<void>或其他不能有构造函数的类型
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。 另一个选择是:
owner
factory
List<T> vectorOf<T, O>(int length, O owner, T createObject(O owner)) => List<T>.generate(length, (_) => createObject(owner));
使用List.generate构造函数,但忽略传递给其工厂函数的索引
List.generate
如果你想创建一个对象,你必须说明如何创建它
这种类型是不够的。如果使用
dart:mirrors
,它可能就足够了,但前提是该类型实际上有一个构造函数。它是一种类类型,而不是函数类型或FutureOr<void>
或其他不能有构造函数的类型例如:
这将创建一个长度为12的列表,其中每个元素都是一个新的空字符串列表
如果需要使用额外参数参数化factory函数,则只需手动将其传递:
这将在每次调用
owner
对象时将其作为参数传递给factory
。 另一个选择是:使用
List.generate
构造函数,但忽略传递给其工厂函数的索引相关问题 更多 >
编程相关推荐