Les entiers sont des objets

Première découverte, les entiers sont (aussi) considérés comme des objets. D'accord ! Ce qui a pour effet que je peux leur appliquer des méthodes ^^1. Pour exécuter 10 fois quelque chose, il me suffit donc d'écrire

10.times do
     print "Hello"
 end

Les "bang!" et les "huh!"

Par convention, certains noms de méthodes se terminent par ! qui se lit bang. Il signale que l'objet sur lequel porte la méthode risque d'être détruit ou modifié. Exemple

s = "Séduisante"
s.chop!
print s  # Ecrira "Séduisant"

De manière similaire, une méthode se terminant pas ? qui se lit huh (hein), informe qu'elle retourne une valeur booléenne.

Méthode singleton

Ruby propose les méthodes singleton ce sont des méthodes redéfinies pour une instance de classe (un objet). Une méthode foo est écrite pour tous les objets de la classe C et l'instance particulière c1 de la classe C peut réécrire la méthode foo.

Ça donne une truc du style

class C
def foo
    print "Je dis foo"
end
end

print "Création d'un instance de C, c1", c1=C.new , ""
print "c1: "
c1.foo

print "Création d'un instance de C, c2", c2=C.new , ""
print "Réécriture de la méthode foo, voir code"
def c2.foo
    print "Je ne dis PLUS foo"
end
print "c2: "
c2.foo

Méthode, module et procédure

Ruby distingue trois notions,

  • Une méthode, est un morceau de code que l'on exécute sur un objet (une instance de classe).
  • Un module, est une classe que l'on ne peut pas instancier (une classe abstraite) et qui ne peut pas être héritée. C'est la notion Java de classe abstraite. Un module va fournir des fonctions et des constantes (le module Math par exemple).
  • Une procédure, permet de nommer une bloc de code ... afin de pouvoir l'exécuter, le passer en argument à une fonction, ...

J'ai encore plein de trucs à découvrir mais jusque là, ça m'excite très fort ... je reviens ici dès que j'ai réussi à faire fonctionner RADRails convenablement. Pour l'instant, j'ai suivi un tutoriel qui semble bien fait ... mais je n'arrive pas à afficher le résultat que je devrais obtenir ... Grr.

J'y retourne de ce pas.

Crédit photo chez 500px par Ruby Cardinal


  1. Ceci est un haussement de sourcils