Comment arrêter la Dart .forEach()?
List data = [1, 2, 3];
data.forEach((value) {
if (value == 2) {
//how to stop?
}
print(value);
});
J'ai essayé return false;
qui travaille en jQuery, mais il ne fonctionne pas dans Dart.
Est-il un moyen de le faire?
- Que signifie "ne pas travailler" signifie? Que faut-il réellement faire?
- Il ne fait rien.
- Quand vous dites que cela fonctionne en JavaScript, entendez-vous dans une librairie comme jQuery? Je demande parce qu'il ressemble à l'algorithme décrit ici ne se brise pas sur une valeur de retour de faux: developer.mozilla.org/en-US/docs/JavaScript/Reference/... Envisager de déposer un bug si vous voulez cette fonction.
- Oui. Vous avez raison. C'est à propos de jQuery.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez également utiliser un dans le, qui utilise implicitement l'itérateur bien démontré dans l'autre réponse:
Il est également possible de mettre en œuvre votre exemple en utilisant forEach() et takeWhile().
Casser un
List
Casser un
Map
Si vous avez affaire à un
Map
vous ne pouvez pas simplement obtenir un itérateur sur la carte, mais vous pouvez toujours utiliser unfor
en l'appliquant sur les valeurs ou les touches. Depuis que parfois vous pourriez avoir besoin de la combinaison de deux touches et les valeurs, voici un exemple:Noter qu'une Carte n'est pas forcément en ont-ils les clés comme
[ 'A', 'B', 'C' ]
utiliser une LinkedHashMap si vous voulez. Si vous voulez juste les valeurs, il suffit de faireexample.values
au lieu deexample.keys
.Alternativement, si vous êtes seulement à la recherche d'un élément, vous pouvez simplifier le tout à:
Le rappel forEach prend retourne void, donc il n'y a pas de mécanisme pour arrêter l'itération.
Dans ce cas, vous devez utiliser les itérateurs:
Dart ne prend pas en charge non-local renvoie, donc, pour en revenir à partir d'un rappel de ne pas interrompre la boucle.
La raison pour laquelle il travaille en jQuery, c'est que chacun() vérifie la valeur retournée par la fonction de rappel.
Dart forEach callback renvoie void.
http://docs.jquery.com/Core/each
basé sur Greg Lowe post, où j'ai utilisé pour mon projet et il fonctionne.