Tous les guides
Intermédiaire-AvancéÀ votre rythmeGuide gratuitSection 4/33

Ruby — Hash, méthodes et blocs

Apprenez à construire et vérifier une application web avec des outils de développement et des assistants IA. Pratiquez les étapes de conception, code et validation.

💡

Contenu gratuit, accessible sans compte. Les outils et modèles évoluent : consultez le dossier actuel pour vérifier leurs versions. Modèles et sources

Section 13.1.4 : Ruby — Hash, méthodes et blocs

🎯 Objectif pédagogique

Maîtriser les Hash (dictionnaires), écrire des méthodes Ruby propres et comprendre les blocs — le mécanisme le plus élégant et distinctif du langage Ruby.


Hash : les dictionnaires Ruby

Un Hash est une collection de paires clé-valeur. Contrairement à un Array indexé par position, un Hash permet d'accéder aux valeurs par une clé nommée.

# Syntaxe moderne (clés symboles - PRÉFÉRÉ)
personne = { nom: 'Alice', age: 28, ville: 'Paris' }
personne[:nom]    # 'Alice'
personne[:age]    # 28

# Ajouter / Modifier
personne[:email] = 'alice@example.com'
personne[:age] = 29

# Supprimer
personne.delete(:ville)

# Vérifications
personne.key?(:nom)      # true
personne.empty?           # false
personne.length           # 3

Symboles vs Strings comme clés

Utilisez toujours des symboles (:nom) comme clés de Hash. Les symboles sont plus rapides (mêmes objets en mémoire) et plus idiomatiques en Ruby. La syntaxe nom: 'valeur' est du sucre syntaxique pour :nom => 'valeur'.

Itération sur les Hash

personne = { nom: 'Alice', age: 28, email: 'alice@example.com' }

personne.each do |cle, valeur|
  puts "#{cle}: #{valeur}"
end

personne.keys     # [:nom, :age, :email]
personne.values   # ['Alice', 28, 'alice@example.com']

personne.map { |k, v| "#{k}=#{v}" }
personne.select { |k, v| v.is_a?(String) }

Hash imbriqués

utilisateurs = {
  alice: {
    nom: 'Alice Martin',
    age: 28,
    competences: ['Ruby', 'JavaScript', 'SQL'],
    adresse: { ville: 'Paris', cp: '75001' }
  },
  bob: {
    nom: 'Bob Dupont',
    age: 32,
    competences: ['Python', 'Docker', 'AWS'],
    adresse: { ville: 'Lyon', cp: '69001' }
  }
}

utilisateurs[:alice][:nom]                  # 'Alice Martin'
utilisateurs[:alice][:adresse][:ville]      # 'Paris'
utilisateurs.dig(:alice, :adresse, :ville)  # 'Paris' (accès sécurisé)
utilisateurs.dig(:charlie, :nom)            # nil (pas d erreur)

Les méthodes

En Ruby, les méthodes retournent implicitement la dernière expression évaluée — pas besoin de return.

def saluer(prenom, langue = 'fr')
  case langue
  when 'fr' then "Bonjour, #{prenom} !"
  when 'en' then "Hello, #{prenom}!"
  when 'es' then "Hola, #{prenom}!"
  else "Hi, #{prenom}!"
  end
end

saluer('Alice')       # Bonjour, Alice !
saluer('Bob', 'en')   # Hello, Bob!

# Keyword arguments
def creer_utilisateur(nom:, email:, role: :viewer)
  { nom: nom, email: email, role: role }
end

creer_utilisateur(nom: 'Alice', email: 'alice@test.com')

# Méthodes prédicats (?), destructives (!)
def majeur?(age)
  age >= 18
end

Les blocs : la signature de Ruby

Les blocs sont des morceaux de code anonymes passés à une méthode. Deux syntaxes :

# do...end (multi-ligne)
[1, 2, 3].each do |nombre|
  puts nombre * 2
end

# { } (une ligne)
[1, 2, 3].each { |nombre| puts nombre * 2 }

Créer ses propres méthodes avec yield

def avec_timing
  debut = Time.now
  yield
  duree = Time.now - debut
  puts "Exécuté en #{duree.round(3)} secondes"
end

avec_timing do
  sleep(1)
  puts 'Travail en cours...'
end

Procs et Lambdas

carre = Proc.new { |n| n ** 2 }
carre.call(5)           # 25
[1, 2, 3].map(&carre)   # [1, 4, 9]

double = ->(n) { n * 2 }
double.call(5)           # 10
[1, 2, 3].map(&double)   # [2, 4, 6]
Vérification rapide

Quelle est la différence entre un Proc et un Lambda en Ruby ?

Vérification rapide

Que retourne : def calcul(a, b) a + b end ?

Apprendre l’IA, du premier prompt aux agents

15 guides gratuitsQuiz, schémas et ateliersSans compte

Votre progression

Cette progression est déclarative et conservée dans votre navigateur. L’attestation finale ne constitue pas un diplôme ni une évaluation indépendante.

Voir ma progression et mon attestation

Apprendre l’IA, du premier prompt aux agents

15 guides gratuitsQuiz, schémas et ateliersSans compte

Un cas pratique IA dans votre boîte mail

Méthodes, ressources et nouveaux exercices. Gratuit, avec désinscription à tout moment.