Introduction
Tout est objet en Ruby
Y compris l'objet nul
nil
(équivalent deNone
en Python)On peut tester si un objet est nul grâce à la méthode
.nil?
Cette méthode renvoie un booléen :true
oufalse
On récupère la classe d'un objet grâce à la méthode
.class
On récupère sa représentation grâce à la méthode
.inspect
On peut le convertir en chaîne de caractère avec
to_s
On peut tester l'appartenance d'un objet à une classe avec
.is_a?
On récupère l'id d'un objet avec la méthode
.object_id
. Deux objets différents ont en général deux identifiants différents. Un petit entier a un id fixe qui est égale à sa valeur * 2 + 1La méthode
.clone
permet de créer une copie d'un objet
Tableaux
Bases
Tableau vide :
Array.new
ou[]
Accès :
Slices : tableau[<indice>, <nombre>]
tableau[<indice>, <nombre>]
Objet range : itérateur incrémental
Slices
Ajout / Suppression à la fin
Ajout / Suppression au début
Unpacking
Hash
: dictionnaires
Hash
: dictionnairesCréation
Accès
Chaînes de caractères
Définition
Concaténation et muabilité
Split et join
Inclusion de variables
Opération avec regexp
Symboles
Les symboles ont un rôle d'identificateur, ce ne sont pas des chaînes de caractères, ils peuvent prendre le rôle d'enumeration
Syntaxe : préfixer le symbole de deux points :
symbol = :foo
Les symboles peuvent être créés à partir de strings :
"foo".to_sym
On peut utiliser les guillemets pour ajouter des espaces et des variables :
Méthodes
Les fonctions sont des méthodes globales
Définition
Valeur par défaut : def ma_methode(a, b=3)
def ma_methode(a, b=3)
Visibilité : on peut rendre une méthode privée private def ma_methode ...
private def ma_methode ...
Paramètre nommés
Unpacking
Constantes
Chaque variable commençant par une majuscule est considérée comme une constante. MaConstante = "constante
MaConstante = "constante
Dès qu'on la modifie, Ruby nous envoie un warning already initialized constant MaConstante
already initialized constant MaConstante
Une classe hérite des constantes de ses parentes
Une classe interne reprend les constantes de sa classe supérieure prioritairement à ses superclasses.
Une classe définie relativement à une autre classe reprend les constantes de ses superclasses prioritairement. En fait, la portée de variable prend le pas sur l'héritage
Conditions
Affectation : Dans les deux cas suivants a
vaut 1
a
vaut 1a = if true then 1 else 2 end
a = true ? 1 : 2
Blocs
```ruby
if expr
faire qqch
end
if true
faire qqch
else
faire autre chose
end
Break : les 3 exemples sont équivalents
Next : passer à l'itération suivante
In
Times
Dernière mise à jour