私はコレクションのようなツリーを開発している問題を考えてみましょう。Javaでレイジーコレクション
私のコレクションの主な機能の一つは、すべて格納されているアイテムを一つずつトレースして、満たされている与えられた基準(怠惰なコレクション)まで、各項目について与えられた機能を呼び出すことです。
だから、この関数は、次のシグネチャを持つ必要があります
void Trace(function func, criteria crit)
{
item i = firstItem();
while (i != endItem())
{
i = nextItem();
func(i);
if (crit(i))
return;
}
}
C++
内の関数ポインタはfunc
とcrit
のために使用することができます。
C#
で、yield
キーワードはまさにこの問題の解決策であると私は信じています。
Javaで同じことをどのようにすることができますか?
ループにはバグがあります。最後の要素は処理されません。 whileループが入力されない長さ1のリストを考えてみましょう。 – Bohemian
グッドポイント:) しかし、幸いにも、それは問題とあまり関係がありません:) – MBZ