5

我刚刚写了这个函数:

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 中是否已经存在?

4

1 回答 1

9

您正在寻找的内容被调用TEnumerable.Select<T, TResult>Spring.Collections为尚未发布的 1.2 引入 - 请参阅开发分支)。

没有 Select 方法的原因IEnumerable<T>是接口类型不能有参数化方法

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

于 2015-05-05T10:24:14.377 回答