Journal du Net Développeur >  Outils >  Ruby : les spécificités du langage

Ruby > 2. Itération et symboles

Précédente 3. Différences fondamentales 
[1] : l'itération avec |élément| :
  1. // parcours le tableau anonyme, et pour chaque valeur, l'additionne au contenu de la variable somme
  2. somme = 0
  3. [ 1, 2, 3 ].each { |i| somme += i }
  4. print somme
[2] : utilisation de symboles dans une classe
  1. // le raccourci attr_reader place les arguments dans les variables d'instance @titre et @auteur
  2. class Livre
  3.   attr_reader :titre, :auteur
  4. end
  5. monLivre = Livre.new("COBOL pour les nuls", "Xavier Borderie")
[3] : utilisation des symboles dans Rails
  1. link_to "Help", { :action => "help" }, :popup => true

Itération et symboles
Si Ruby dispose de boucles classiques (while()) et moins classiques (until()), il offre également une syntaxe originale pour l'itération : |élément|. Les caractères || sont généralement utilisés pour signifier le comparatif OU, mais Ruby rend accessible, pour chaque objet disposant de la méthode each, de cet autre usage. Très utile dans le cas de tableau par exemple, cela permet l'écriture de boucles comparables au foreach() d'autres langages. [1]

Ruby propose également un raccourci très utilisé : le deux-points. En plaçant un deux-points devant un mot, on créé un symbole. La différence entre variable et :variable est que le premier donne la valeur de variable, tandis que le second renvoie le nom de la variable (donc, "variable"). C'est une syntaxe courante, notamment dans le cadre de la programmation Objet [2], mais également l'utilisation de hash, ou dictionnaire [3]. En clair, les symboles sont utiles chaque fois que l'on utilise un terme pour représenter quelque chose. Plutôt que de stocker un grand nombre de termes en mémoire, Ruby n'en stockera qu'un seul.

Précédente Retour au sommaire page suivante 
Introduction | 1 | 2 | 3
 
|
Haut de page
Nos autres sites Société | Mentions légales | Contacts | Publicité | PA Emploi | Presse | Recrutement | Tous nos sites | Données personnelles
© Benchmark Group, 69/71 avenue Pierre Grenier. 92517 Boulogne Billancourt Cedex