有地图功能吗?
Is there a map function?
我刚写了这个函数:
class function TGenerics.Map<TFrom, TTo>(const AEnumerable: IEnumerable<TFrom>;
const AConverter: TConstFunc<TFrom, TTo>): IList<TTo>;
var
L: IList<TTo>;
begin
L := TCollections.CreateList<TTo>;
AEnumerable.ForEach(
procedure(const AItem: TFrom)
begin
L.Add(AConverter(AItem));
end
);
Result := L;
end;
这大致等同于 Haskells map
(或 fmap
、liftM
等)。
所以我想知道 Spring4D 中是否已经存在类似的东西?
您要查找的内容在 Spring.Collections
中称为 TEnumerable.Select<T, TResult>
(为尚未发布的 1.2 引入 - 请参阅开发分支)。
IEnumerable<T>
没有 Select 方法的原因是接口类型 cannot have parameterized methods.
请记住,Spring4D 中的实现与您的不同,因为它使用流式处理和延迟执行。
我刚写了这个函数:
class function TGenerics.Map<TFrom, TTo>(const AEnumerable: IEnumerable<TFrom>;
const AConverter: TConstFunc<TFrom, TTo>): IList<TTo>;
var
L: IList<TTo>;
begin
L := TCollections.CreateList<TTo>;
AEnumerable.ForEach(
procedure(const AItem: TFrom)
begin
L.Add(AConverter(AItem));
end
);
Result := L;
end;
这大致等同于 Haskells map
(或 fmap
、liftM
等)。
所以我想知道 Spring4D 中是否已经存在类似的东西?
您要查找的内容在 Spring.Collections
中称为 TEnumerable.Select<T, TResult>
(为尚未发布的 1.2 引入 - 请参阅开发分支)。
IEnumerable<T>
没有 Select 方法的原因是接口类型 cannot have parameterized methods.
请记住,Spring4D 中的实现与您的不同,因为它使用流式处理和延迟执行。