Bases du langage
Variables
Types
- Integer
1234 - Float
3.14 - String
'string'ou"string" - Boolean
trueetfalse
En Ruby, le type null est nil.
Méthodes utiles pour convertir les types
to_i: conversion en Integerto_f: conversion en Floatto_s: conversion en String
Vérifier qu’une variable est d’un certain type
En Ruby, on vérifie rarement le type d’une variable, on utilise plutôt la méthode respond_to? afin de vérifier qu’on puisse lui appliquer une certaine méthode.
Déclaration d’une variable
En Ruby, les variables ont un typage faible et peuvent changer de type à volonté.
Inclusion de variable dans une string :
Il est possible de déclarer des variables de manière globale en la plaçant en dehors de tout bloc et en utilisant le signe $.
Et pour finir, il est possible de déclarer des constantes en écrivant leur nom tout en majuscule.
Entrées/Sorties
puts affiche une chaîne de caractères à l’écran (avec saut de ligne)
print affiche une chaîne de caractères à l’écran (sans saut de ligne)
gets récupère une entrée utilisateur (garde le saut de ligne de fin)
utliser la méthode chomp pour supprimer le saut de ligne final
Commentaires
- Commentaires sur une ligne
En Ruby, un commentaire sur une ligne est défini par le caractère #.
- Commentaires sur plusieurs lignes
Il est possible de définir un bloc de commentaires pouvant tenir sur plusieurs lignes à l’aide de =begin et =end.
Conditions
Bloc if-elsif-else
unless condition est équivalent à if !condition
Une condition if peut s’écrire sur une ligne :
Il est possible de combiner les conditions avec &&, || et !.
Bloc case-when
Il existe une version raccourcie :
Ternaire
En Ruby, les conditions ternaires s’écrivent comme dans tous les autres langages :
Operateurs conditionnels
|| renvoie la 1ère valeur si truthy et la 2ème sinon.
- Affectation conditionnelle
Boucles
Boucle while
Boucle for
- Sauter une itération
Boucle loop (Infinie)
Tableaux
- Déclaration d’un tableau et accès à un élément
- Ajout d’un élément à un tableau
Pour ajouter un élément à un tableau, on peut utiliser la concaténation d’un autre tableau avec l’opérateur +, les chevrons («) ou la méthode push.
- Retrait d’un élément du tableau
On utilise la méthode pop de la classe Array
- Méthodes
collectetmap
Ce sont deux fonctions identiques qui executent un bloc pour chaque élément d’un tableau et retournent le tableau resultant.
Hash
- Déclaration d’un Hash et accès à un élément
Syntaxe plus moderne utilisant implicitement des symboles
En utilisant le constructeur et en spécifiant une valeur par défaut
- Ajout d’un élément dans un Hash
Itérateurs
- Méthode times
- Méthode each
Fonctions
- Définir une fonction
En l’absence d’instruction return, une fonction renverra le résultat de sa dernière instruction.
En Ruby, on ne teste pas le type d’un paramètre mais on tente directement de le caster.
Conventions de nommage
Les caractères spéciaux sont autorisés dans les noms de fonction ainsi que les symboles comme ‘+’, ‘-’… Traditionnellement, les fonctions possédant ces symboles implémentent les opérateurs correspondants.
?: retourne un boolean!: modifie l’objet
Paramètres optionnels
Il est possible de rendre un paramètre optionnel en précisant sa valeur par defaut
Liste de paramètres
Il est toujours possible de passer des paramètres “isolés” en les mettant avant la liste.
Procs et Blocs
Blocs
Passer un bloc a une fonction
Un bloc peut être passé à une fonction à l’aide du mot-clé yield.
Un bloc peut être appelé plusieurs fois en mettant plusieurs yield dans la fonction.
Warning
À partir du moment où on met un yield dans une fonction, celle-ci va obligatoirement attendre un paramètre de type bloc.
Passer un paramètre à un bloc
Il est possible de passer un ou plusieurs paramètre(s) à yield. Ils seront automatiquement passés au bloc :
La limite des blocs est qu’ils ne peuvent pas être sauvegardés dans des variables. Empêcher ainsi de pouvoir les réutiliser à plusieurs endroits.
Procs
On peut voir les procs comme des blocs qu’on peut sauvegarder.
- Création d’un
Proc
On peut créer un Proc avec Proc.new auquel on passe un bloc. Et on peut le sauvegarder dans une variable.
- Passage d’un
Procà une fonction
Pour être passé en tant que bloc à une fonction, un Proc doit être ‘converti’ en bloc. Cela se fait avec le signe &.
- Appel direct d’un
Proc
Il est possible d’appeler à n’importe quel moment un Proc en utilisant la méthode call :
- Récupérer dans une fonction un bloc sous forme de
Proc
Il est possible de récupérer un bloc sous forme de Proc dans une fonction à l’aide du même signe & :
Info
Contrairement aux blocs, il est possible de passer plusieurs Proc à une fonction !
Lambda
En Ruby, un lambda est très similaire à un Proc.
Pour créer un lambda, il suffit de remplacer le Proc.new par lambda et lui passer un bloc.
Il s’utilise ensuite de la même façon qu’un Proc.
Différences entre Proc et lambda
- Un lambda vérifie le nombre de paramètres fournis, alors que le Proc n’effectue aucune vérification sur les paramètres.
- Dans un lambda, le
returnretourne au sein du bloc, alors que dans un Proc, il le comprend comme unreturn“classique”.