2010-07-20 7 views
8

J'ai récemment couru dans le code qui ressemble à ceci:Quelle est cette syntaxe Ruby?

next { 
      'foo'   => bar, 
      'foobar'  => anotherbar, 
     } 

Au début, il ressemble à un hachage simple, mais il n'y a pas d'affectation à côté. Suivant dans ce cas ressemble à un mot-clé Ruby réservé. Que fait ce code?

+0

fait suivant la boucle pour arrêter l'itération en cours et passer à l'autre, mais je ne sais pas ce que le hachage après que cela signifie. – Dani

+0

Pouvez-vous afficher plus de code? – kiamlaluno

Répondre

14

est similaire au mot-clé continue dans la famille des langues c, sauf dans ruby ​​il fait un itérateur passer à l'itération suivante. Comme les blocs ont toujours une sorte de valeur de retour, vous pouvez choisir de passer un en argument à next.

est généralement utilisé dans des cas comme l'itération d'une liste de fichiers et l'action (ou non) en fonction du nom de fichier.

Ensuite, vous pouvez prendre une valeur, qui sera la valeur renvoyée pour l'itération en cours du bloc.

sizes = [0,1,2,3,4].map do |n| 
    next("big") if n > 2 
    puts "Small number detected!" 
    "small" 
    end 

    p sizes 

Output: 

    Small number detected! 
    Small number detected! 
    Small number detected! 
    ["small", "small", "small", "big", "big"] 

de http://ruby-doc.org/docs/keywords/1.9/

Questions connexes