|
|
|
|
TUTORIEL OUTILS |
|
|
|
Ruby : la syntaxe |
Nouvelle exploration de ce langage très exotique, mais dont la popularité n'a de cesse de grimper. Méthodes objets, blocs et structures de contrôles sont abordés.
(25/08/2005) |
|
Objectif : nous plonger plus
en avant dans les méandres du langage Ruby (lire notre
article du 18/03/2005) en examinant des exemples plus complets,
qui nécessiteront l'installation d'un compilateur, comme le
RubyInstaller
pour Windows. Les utilisateurs de Mac OS X 10.2 (disponible
depuis août 2002) ont Ruby déjà installé sur leur machine.
Notre article précédent faisait un rapide survol de la syntaxe
du langage, avec un court exemple. Nous allons aborder quelques
autres aspects du fonctionnement de Ruby, montrant ainsi sa
différence avec les autres langages, et par là même ses possibles
qualités.
Syntaxe de base et méthodes Objet
Le créateur de Ruby a opéré un savant mélange de syntaxe classique
et de nouveautés assez audacieuses, permettant au débutant
de rapidement intégrer les bases du langage, pour ne subir les
nouveautés qu'au moment de pousser plus loin. Ainsi, les grands
classiques d'assignation et comparaison sont respectés :
nombre_de_lapins = 7
nombre_d_ephelants = 1
$nombre_d_animaux = nombre_de_lapins + nombre_d_ephelants
# le $ signifie que la variable est globale
puts $nombre_d_animaux
puts 'rien de ' * 5 + 'rien du tout'
# affiche "rien de rien de rien de rien de rien de rien du tout"
À l'instar d'autres langages orientés Objet récents, Ruby se
targue d'être "tout objet". C'est effectivement le cas, en cela
que tous les types comme les entiers ou le caractère, primitifs
dans certains autres langages, sont aussi des objets à part
entière, et disposent donc de leurs propres méthodes :
puts 3.14159265.round #
arrondi la valeur au plus proche entier
puts 41.next # donne l'entier suivant (équivalent
de 41+1)
puts "Ce lapin est sacrément rose, je trouve".length #
affiche 38
[ "un", "deux", "trois" ].reverse
# inverse l'ordre du tableau : [ "trois", "deux", "un"]
d = Dir.new("/")
# pointe vers le dossier courant grâce à new. Dir est une classe
interne à Ruby pour les répertoires
d.each { |x| puts x }
# affiche le contenu du dossier grâce à each
Il est par ailleurs très facile d'ajouter ses propres méthodes
aux classes en Ruby, autant pour ses propres classes que celles
définies en interne. Ainsi, on peut reprendre la classe Float
directement :
class Float
def jeMange
"Vous ne voyez pas que je mange ?"
end
end
puts 3.14159265.jeMange
# affiche le chaîne "Vous ne voyez pas que je mange ?"
Blocs
L'exemple qui affiche le répertoire nous permet d'aborder les
blocs en Ruby. Depuis l'avènement de C, les blocs sont le plus
souvent définis par des { ... },
et Ruby de ne fait pas exception ici, sauf que les arguments
pris en compte par le contenu du bloc sont passés à l'aide du
sous-bloc | ... | . Ruby autorise
également l'usage de blocs entourés de "do...end".
0.upto(10) { |i| print i, "
" } # les chiffres de 0 à 10
Cet exemple utilise la méthode Integer.upto pour parcourir les
valeurs de 0 à 10. Ces valeurs sont transmises au bloc via |i|,
et affichées avec print. Ce passage de méthode peut être comparé
aux parenthèse d'un bloc plus classique. Plusieurs valeurs peuvent
dont être passées : |i|, |x,
y|, |client, tarif, annee|,
...
La syntaxe de Ruby est assez libre, et comme l'exemple précédent
le montre, des fonctions peuvent tenir sur une seule ligne.
D'autres manières d'écrire cet exemple sont :
0.upto(10) do |i| print i, " " end
0.upto(10) do |i|
print i, " "
end
0.upto(10) {
|i|
print i, " "
}
Il faut simplement noter que la forme {
... } a une plus haute précédence que do..end.
Structures de contrôle
Ruby profite des grands classiques, et en ajoute même en passant.
if, while,
for sont ainsi représentés :
if a == 'marvin' and b == 42
# une action
else
# une autre action
end
i =0
while i <= 10
puts "i = " + i.to_s
i+= 1
end
# for est en fait un foreach() réservé aux tableaux
t = [ "un", "deux", "trois" ]
for x in t
print x + "\n"
end
|
Forum |
|
Réagissez
dans les forums
de JDN Développeurs
|
Enfin, Ruby ajoute deux structures pouvant se montrer utiles
: unless et until.
Chacune est respectivement l'inverse de if
et while :
p = 5
unless p < 5 # "sauf si p est
inférieur à 5"
print p # affiche 5
end
z=0
until z >= 10 # "jusqu'à ce que
z est supérieur ou égal à 10"
print z.to_s # affiche les chiffres de
0 à 9
z+=1
end |
|
|
|
|
|
Quand achetez-vous le plus en ligne ? |
|
|
|
|
|
|
|
|