我刚写了这个函数:
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
(或fmap
,liftM
等。)
所以我想知道Spring4D中是否存在类似的内容?
答案 0 :(得分:8)
您正在寻找的内容在TEnumerable.Select<T, TResult>
中被称为Spring.Collections
(针对尚未发布的1.2介绍 - 请参阅开发分支)。
IEnumerable<T>
没有Select方法的原因是接口类型为cannot have parameterized methods。
请记住,Spring4D中的实现与您的实现不同,因为它使用流式传输和延迟执行。