有地图功能吗?

时间:2015-05-05 09:54:44

标签: delphi collections delphi-xe2 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;

这大致等同于Haskell map(或fmapliftM等。)

所以我想知道Spring4D中是否存在类似的内容?

1 个答案:

答案 0 :(得分:8)

您正在寻找的内容在TEnumerable.Select<T, TResult>中被称为Spring.Collections(针对尚未发布的1.2介绍 - 请参阅开发分支)。

IEnumerable<T>没有Select方法的原因是接口类型为cannot have parameterized methods

请记住,Spring4D中的实现与您的实现不同,因为它使用流式传输和延迟执行。