I named it Ruby---after the precious red stone--- and released it to the public in 1995.
Yukihiro Matsumoto, a.k.a. ``Matz''
On peut aussi y voir une référence à Perl
Au Japon ce language est plus populaire que Perl ou Python
Ruby est l'interpréteur chargé d'exécuter le code que nous écrirons plus tard
IRB est un "Live" interpreter, il permet de tester
le code au fur et à mesure qu'on le tape
On peut le voir comme un shell en Ruby
On aurait pu écrire
hash = { :cle => "valeur", :key => "value"}
au lieu de
hash = { "cle" => "valeur", "key" => "value"}
Chaque clé format chaîne de caractère pointe vers une zone mémoire différente, même si elles sont identiques.
Un symbole permet de stocker dans un emplacement
mémoire unique toutes les clés identiques.
Souvent utilisé dans Ruby on Rails
Bien entendu toute l'arithmétique habituelle et des fonctions de manipulations de chaîne en veux-tu, en voilà
.upcase, .downcase, .swapcase, .chomp, .chop
puts ("Hello".rjust(80))
Qu'est ce que c'est que ça
En Ruby, tout est objet
puts ("Hello".rjust(80))
Un objet est une instance d'une classe
Une praline est une instance d'un moule
"Sur" des objets on peut utiliser des méthodes
praline.croquer(), praline.avaler
Ces méthodes peuvent prendre des arguments
praline.couper(3) couper en 3 morceaux
Les objets contiennent aussi ce qu'on appelle des variables membres.
Deux variables membres de la praline serait par
exemple :
Lier les actions (méthodes) et les propriétés (variables membres) à l'objet qui les concerne
La définition de la structure de l'objet se fait dans une classe, ses "valeurs" sont spécifiées à l'instanciation de l'objet (quand on moule la praline).
En Ruby, tout est objet
EXEMPLES !
Qu'est ce qu'une méthode de classe ?
Une méthode que l'on peut appeler sur une classe,
sans qu'aucune instance de cette classe n'existe,
sans qu'aucun objet de cette classe n'existe
Tout comme dans la plupat des languages, on retrouve les
Pas d'accolades, pas d'indentation
if (condition) code ... end #end finit un bloc
Un itérateur est une méthode standard pour parcourir une collection de donnée une liste, une hash table, une pile, etc ...
[1,2,3].each do |i| puts i.to_s end puts "Piano !"
hash = { :pomme => "rouge",
:raisin => ["noir", "blanc"]
}
hash.each do |key, val|
puts "#{key} de couleur #{val}"
end
On va parcourir la hash table et obtenir
Un itérateur "marrant"
3.times do puts "Hello World" end
On peut utiliser une méthode particulière sur le type tableau
fruits = ["pomme", "poire", "raisin"]
puts fruits => pomme poire raisin
pruts fruits.to_s => pommepoireraisin
puts fruits.join(' - ') + ';'
=> pomme - poire - raisin;
Et les grands classiques
fruits.last, fruits.length, fruits.pop,
fruits.push ("abricot"), ...
Pour une écrire une fonction, rien de plus simple
def fonction(arg1, arg2)
code ...
return arg1*arg2
end
puts fonction("poire", 3)
=> poirepoirepoire
Encore une fois le mot clé 'end' finit le bloc
'return' spécifie la valeur retournée
et 'def' ... anonce une définition
"une chaine"*3 ... vous avez compris ;)
def fonction(arg1, arg2)
puts fonction("poire", 3)
ou
def fonction arg1, arg2 puts fonction "poire", 3
il est conseillé de ne pas laisser d'espace entre le nom de fonction et la parenthèse ouvrante des arguments
fonction("poire", 3) et pas fonction ("poire", 3)
variable locale != variable globale
toute variable déclarée à l'intérieur du bloc de
la fonction est locale à la fonction
la fonction n'accède pas aux variables externes
=> passage d'arguments
il est également possible de passer ou retourner un tableau dans une fonction
pratique pour passer une structure de donnée complète d'un coup ou récupérer de multiples informations d'un coup en valeur de retour
Définition de la classe
class Praline @biscuit @chocolat def initialize (bis, choc) @biscuit = bis @chocolat = choc end
def afficher
puts "au chocolat #{@chocolat}"
puts "et au biscuit" if @biscuit
end
end
praline = Praline.new(false, "noir") praline2 = Praline.new(true, "brun") praline.afficher puts "-"*20 praline2.afficher
résultats
au chocolat noir -------------------- au chocolat brun et au biscuit