web-dev-qa-db-fra.com

Déclaration de poursuite illégale?

J'ai quelque chose de similaire au code suivant:

_.each data, (value, type) ->
    switch type
        when "answered"
            icon = "results_answered"
            label = definitions.results.metrics.ta
        when "leftblank"
            icon = "results_lb"
            label = definitions.results.metrics.tlb
        when "standing"
            icon = "results_standing"
            label = definitions.results.metrics.cs
        when "minimum"
            icon = "results_min"
            label = definitions.results.metrics.lowest
        else
            continue

    metricLine = utilities.div("metricline")
    metricLine.grab utilities.Sprite(icon, "metric_icon")
    metricLine.grab utilities.div("metriclabel", label + ":")
    metricLine.grab utilities.div("metricvalue", value)
    metricContainer.grab(metricLine)

metricContainer

Mais cela renvoie l'erreur suivante à mon navigateur:

SyntaxError non capturée: instruction continue illégale

Est-il possible d'inclure un continue comme j'essaye sans lancer l'erreur?

21
Abe Miessler

Si vous voulez continuer avec l'itération de boucle suivante, vous voulez return, pas continue, car ce que vous passez à each est une fonction.

Dans un commentaire, vous avez mentionné être familier avec la boucle C # foreach, donc vouloir utiliser continue. La différence est que, avec le foreach de C #, vous avez affaire à une construction de boucle réelle, tandis que each appelle en fait une fonction pour chaque itération de boucle, donc ce n'est pas (au niveau du langage) un boucle, donc vous ne pouvez pas continue it.

67
T.J. Crowder

vous n'utilisez pas une construction de boucle dans votre code mais une fermeture. vous ne pouvez quitter une boucle qu'en continuant. Lorsque vous utilisez des traits de soulignement pour chaque fonction, vous devez quitter la fermeture/fonction par retour

#language construct
for item in items
    if some_condition
        continue

#closure construct
_.each data, (item) ->
    if some_condition
        return
10
robkuz