3
私はすべてのコレクションにSpring4Dを使用しています。IsFirstとIsLast関数を持つ列挙子を実装する方法は?
現在、列挙子の現在の値がコレクションの最初のもの(簡単かどうか)または最後のもの(ハードなもの)かどうかを知る必要がある状況があります。
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
の機能はどのように実装できますか?
要素が最初か最後か、まったく違うことができない場合は、その知識で何を達成しようとしているのですか? –
私たちは、[control break](https://en.wikipedia.org/wiki/Control_break)というやや珍しい形で使っています。 –
私が言ったように、これを行う別の方法があるかもしれません - たとえば、ウィキペディアの記事では、TEnumerable.GroupByを使ってグループ化することができます。 –