« Programmation Ruby/Types standards » : différence entre les versions

Contenu supprimé Contenu ajouté
Ganjo (discussion | contributions)
m typo
Ganjo (discussion | contributions)
Ligne 299 :
 
=== Itérateurs ===
 
Les itérateurs sont un mécanisme puissant de ruby, ils permetent de parcourir les éléments d'un objet. Nous verrons plus tard comment facilement comme étendre sa propre classe avec des itérateurs. Pour chaque type que nous allons voir, nous allons voir ses itérateurs. A l'heure actuelle considérons simplement un itérateur comme une méthode prenant un bloc pour paramètre (et d'ailleurs c'est ce que les itérateurs sont : de simples méthodes).
 
==== succ, succ! et upto ====
 
''succ'' se contente de renvoyer l'élément succédant à la chaine, en pratique ''succ'' incrémente le dernier caractère alphanumérique de la chaine, si celui-ci à ateind sa limite, ''succ'' incrémentera l'avant dernier caractère et ainsi de suite:
 
"abcd".succ => "abce"
"THX1138".succ => "THX1139"
"<<koala>>".succ => "<<koalb>>"
"1999zzz".succ => "2000aaa"
 
''upto'' itère à travers les valeurs successive d'une chaine, jusqu'a arrivé à la chaine passé en paramètre. La méhode incrémente à partir de la dernière valeur alphanumérique de la chaine :
 
"<<aa>>".upto("<<bb>>") do
|i| puts i
end
=> <<aa>>
<<ab>>
<<ac>>
<<ad>>
<<ae>>
<<af>>
<<ag>>
<<ah>>
<<ai>>
<<aj>>
<<ak>>
<<al>>
<<am>>
<<an>>
<<ao>>
<<ap>>
<<aq>>
<<ar>>
<<as>>
<<at>>
<<au>>
<<av>>
<<aw>>
<<ax>>
<<ay>>
<<az>>
<<ba>>
<<bb>>
 
==== each_byte ====
 
''each_byte'' permet d'itérer à travers la chaine de caractères octet par octet, la valeur qui sera envoyée au bloc sera le code ascii (donc un entier) du caractère :
 
"bonjour".each_byte {|i| print i.to_s+" "} => 98 111 110 106 111 117 114
 
==== each ====
 
''each'' permet d'itérer à travers chaque ligne contenu dans une ''String'' :
 
"H\nA\r\nL\n".each do
|i| print i.succ
end => IBM
 
Il est à noter que l'itérateur ''each'' est celui appelé par la construction ''for''..''in' :
 
for i in "H\nA\r\nL\r"
print i
end
=> IBM
 
== Valeur numérique ==