我对所有集合都使用 Spring4D。
现在有一种情况,我必须知道枚举数的当前值是集合中的第一个(这很容易)还是最后一个(这很困难)。
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
Spring.Collections;
var
Enumerable: IEnumerable<Integer>;
Enumerator: IEnumerator<Integer>;
begin
Enumerable := TEnumerable.Query<Integer>(TArray<Integer>.Create(1, 2, 3, 4, 5)
) as IEnumerable<Integer>;
Enumerator := Enumerable.GetEnumerator;
while Enumerator.MoveNext do
begin
WriteLn('Value = ', Enumerator.Current);
WriteLn('First in collection? ', Enumerator.CurrentIsFirst);
WriteLn('Last in collection? ', Enumerator.CurrentIsLast);
end;
ReadLn;
end.
CurrentIsFirst
可以使用本地布尔值来实现,一旦第一个值通过,该布尔值就会被重置。
但是我不知道实现的简单方法CurrentIsLast
。
它应该能够处理惰性集合,因为它们可能包含太多无法放入内存的值。
我怎样才能实现这样的CurrentIsLast
功能?