Aide-mémoire Ruby
Dernière mise à jour
Hello World et exécution du code
Ruby ne nécessite aucun code standard - une seule ligne s'exécute.
| Opération | Syntaxe |
|---|---|
| Afficher avec saut de ligne | puts "Hello, World!" |
| Afficher sans saut de ligne | print "Hello" |
| Inspecter une valeur | p [1, 2, 3] |
| Interpolation de chaîne | puts "Hi #{name}" |
| Commentaire | # this is a comment |
| Commentaire multiligne | =begin ... =end |
| Exécuter un fichier | ruby app.rb |
| Shell interactif | irb |
Variables et types
Ruby est typé dynamiquement ; tout est un objet.
| Opération | Syntaxe |
|---|---|
| Variable locale | age = 30 |
| Constante | PI = 3.14 |
| Variable d'instance | @name = "Ada" |
| Variable globale | $count = 0 |
| Symbole | :status |
| Nil / booléen | nil, true, false |
| Vérifier le type | 42.class renvoie Integer |
| Convertir un type | "42".to_i, 42.to_s, "3.5".to_f |
Chaînes
Les chaînes sont des objets mutables dotés d'un riche ensemble de méthodes.
| Opération | Syntaxe |
|---|---|
| Longueur | "hello".length |
| Majuscules / minuscules | s.upcase, s.downcase |
| Supprimer les espaces | s.strip |
| Remplacer | s.gsub("a", "b") |
| Découper en tableau | "a,b,c".split(",") |
| Contient une sous-chaîne | s.include?("ell") |
| Extraire des caractères | s[0..2] |
| Concaténer | "foo" + "bar", s << "!" |
| Répéter | "ab" * 3 |
| Formater | format("%05d", 42) |
Tableaux
Collections ordonnées indexées par entiers.
| Opération | Syntaxe |
|---|---|
| Créer | nums = [1, 2, 3] |
| Accès par indice | nums[0], nums[-1] |
| Ajouter à la fin | nums.push(4), nums << 4 |
| Retirer de la fin | nums.pop |
| Longueur | nums.length |
| Map | nums.map { |n| n * 2 } |
| Filtrer | nums.select { |n| n.even? } |
| Réduire | nums.reduce(0) { |sum, n| sum + n } |
| Trier | nums.sort |
| Joindre en chaîne | nums.join(", ") |
Hashes
Collections clé-valeur, souvent indexées par des symboles.
| Opération | Syntaxe |
|---|---|
| Créer | user = { name: "Ada", age: 30 } |
| Accéder à une valeur | user[:name] |
| Définir une valeur | user[:email] = "a@x.com" |
| Vérifier une clé | user.key?(:name) |
| Supprimer une clé | user.delete(:age) |
| Clés / valeurs | user.keys, user.values |
| Itérer | user.each { |k, v| puts "#{k}: #{v}" } |
| Valeur par défaut | Hash.new(0) |
| Fusionner | h1.merge(h2) |
Contrôle de flux
Conditions et boucles ; remarquez les modificateurs en suffixe de Ruby.
| Opération | Syntaxe |
|---|---|
| If / elsif / else | if x > 0 ... elsif x < 0 ... else ... end |
| If en ligne (modificateur) | puts "hi" if ready |
| Unless | unless done ... end |
| Ternaire | x > 0 ? "pos" : "neg" |
| Case / when | case n; when 1 then ...; else ...; end |
| Boucle while | while i < 10 ... end |
| Boucle until | until done ... end |
| Times | 5.times { |i| puts i } |
| Itération sur une plage | (1..5).each { |i| puts i } |
| Break / next | break, next |
Méthodes
La dernière expression est renvoyée implicitement.
| Opération | Syntaxe |
|---|---|
| Définir une méthode | def add(a, b) ... end |
| Retour implicite | def square(x) x * x end |
| Argument par défaut | def greet(name = "World") ... end |
| Arguments nommés | def box(w:, h:) ... end |
| Splat (variadique) | def sum(*nums) ... end |
| Méthode se terminant par ? | def valid? ... end |
| Méthode se terminant par ! | def normalize! ... end |
| Appeler sans parenthèses | greet "Ada" |
Blocs, procs et lambdas
Les blocs sont des fragments de code passés aux méthodes ; les procs et les lambdas les stockent.
| Opération | Syntaxe |
|---|---|
| Bloc (accolades) | [1, 2].each { |n| puts n } |
| Bloc (do/end) | [1, 2].each do |n| puts n end |
| Yield vers un bloc | def run; yield; end |
| Vérifier la présence d'un bloc | block_given? |
| Capturer le bloc en paramètre | def run(&blk); blk.call; end |
| Créer un proc | square = proc { |x| x * x } |
| Créer un lambda | square = ->(x) { x * x } |
| Appeler un proc / lambda | square.call(3), square.(3) |
Classes et modules
Les classes contiennent l'état et le comportement ; les modules injectent des méthodes partagées.
| Opération | Syntaxe |
|---|---|
| Définir une classe | class Point ... end |
| Constructeur | def initialize(x, y) @x = x; @y = y; end |
| Méthode d'instance | def dist ... end |
| Raccourcis d'accesseur | attr_accessor :x, :y |
| Créer une instance | p = Point.new(1, 2) |
| Hériter | class Circle < Shape ... end |
| Méthode de classe | def self.origin ... end |
| Définir un module | module Drawable ... end |
| Injecter un module | include Drawable |
| Appeler super | super(args) |
La syntaxe Ruby que vous utilisez le plus, sur une seule page. Cet aide-mémoire Ruby est une référence rapide pour le cœur du langage - variables et types, chaînes, tableaux et hashes, contrôle de flux, méthodes, ainsi que les blocs, procs et lambdas qui rendent Ruby si expressif.
Tout ce qui figure ici est du Ruby pur et s'exécute sur n'importe quel interpréteur standard. Copiez ce dont vous avez besoin, ou essayez chaque extrait en direct dans le playground Ruby - aucune installation requise.
FAQ de l'aide-mémoire Ruby
Cet aide-mémoire Ruby est-il gratuit ?
Quelle est la différence entre un bloc, un proc et un lambda ?
{ ... } ou do ... end - ce n'est pas un objet à part entière. Un proc enveloppe un bloc dans un objet appelable que vous pouvez stocker et faire circuler. Un lambda est un proc spécial qui vérifie strictement son nombre d'arguments et traite return comme un retour du lambda lui-même, alors qu'un proc simple effectue un retour de la méthode englobante.Que sont les symboles en Ruby ?
:name est un identifiant immuable et réutilisable. Comme le même symbole pointe toujours vers le même objet en mémoire, les symboles sont plus rapides et plus économes en mémoire que les chaînes pour des usages comme les clés de hash et les noms de méthode - c'est pourquoi vous voyez souvent les hashes écrits sous la forme { name: "Ada" }.