Considérez un problème, dans lequel je développe une collection en forme d'arbre.
Une des fonctionnalités principales de ma collection est de suivre tous les éléments stockés un par un, puis d'appeler une fonction donnée pour chaque élément jusqu'à ce qu'un critère donné soit atteint (collection paresseuse).
Donc la fonction devrait avoir les signatures suivantes :
void Trace(function func, criteria crit)
{
item i = firstItem();
while (i != endItem())
{
i = nextItem();
func(i);
if (crit(i))
return;
}
}
en C++
, les pointeurs de fonction peuvent être utilisés pour func
et crit
.
en C#
, le mot-clé yield
est exactement la solution à ce problème, je crois.
Comment puis-je obtenir la même chose en Java ?