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;

mapこれは、Haskells (またはfmapliftMなど)とほぼ同等です。

だから私はSpring4Dにこのようなものがすでに存在するのだろうか?

4

1 に答える 1

9

探しているものは呼び出さTEnumerable.Select<T, TResult>れますSpring.Collections(まだリリースされていない 1.2 用に導入されました - 開発ブランチを参照してください)。

IEnumerable<T>Select メソッドを持たない理由は、インターフェース型がパラメーター化されたメソッドを持つことができないためです。

Spring4D での実装は、ストリーミングと遅延実行を使用するため、独自のものとは異なることに注意してください。

于 2015-05-05T10:24:14.377 に答える