Objectifs
- Définir une méthode personnalisée avec les mots-clés
defetend. - Passer des arguments à une méthode pour la rendre flexible.
- Comprendre le concept de retour implicite, une caractéristique clé de Ruby.
- Définir des arguments avec des valeurs par défaut pour rendre les méthodes plus faciles à appeler.
Qu’est-ce qu’une méthode ?
Une méthode en Ruby est ce que l’on appelle une fonction dans de nombreux autres langages. C’est un bloc de code nommé que vous pouvez appeler à plusieurs reprises pour effectuer une tâche spécifique.
L’utilisation de méthodes est la pierre angulaire de l’écriture de code propre et maintenable, car elle permet d’éviter la répétition (principe DRY : Don’t Repeat Yourself).
Définition et Appel
On définit une méthode avec le mot-clé def, suivi du nom de la méthode, et on termine le bloc avec end. On l’appelle simplement en utilisant son nom.
# Définition de la méthode
def afficher_separator
puts "--------------------"
end
# Appel de la méthode
puts "Section 1"
afficher_separator
puts "Section 2"
afficher_separator
Convention : Les noms de méthodes, comme les variables, utilisent le
snake_case.
Passer des arguments
Pour qu’une méthode soit réutilisable, elle doit pouvoir accepter des paramètres (arguments). On les définit entre parenthèses après le nom de la méthode.
def saluer(nom)
puts "Bonjour, #{nom} !"
end
saluer("Alice") # Affiche "Bonjour, Alice !"
saluer("Bob") # Affiche "Bonjour, Bob !"
Arguments avec valeurs par défaut
Vous pouvez rendre un argument optionnel en lui donnant une valeur par défaut.
def saluer(nom = "invité")
puts "Bonjour, #{nom} !"
end
saluer("Alice") # => "Bonjour, Alice !"
saluer # => "Bonjour, invité !" (utilise la valeur par défaut)
Le retour de méthode : Le retour implicite
C’est l’un des concepts les plus importants et les plus élégants de Ruby. Une méthode retourne automatiquement la valeur de la dernière expression évaluée. Le mot-clé return est donc souvent inutile.
def additionner(a, b)
# La dernière (et seule) expression est 'a + b'.
# Sa valeur sera retournée.
a + b
end
resultat = additionner(5, 3)
puts resultat # => 8
On n’utilise return que pour sortir prématurément d’une méthode, par exemple à l’intérieur d’une condition.
def diviser(a, b)
if b == 0
return "Erreur : division par zéro !"
end
a / b
end
Bonnes pratiques
- Une méthode, une seule responsabilité. Une méthode doit faire une seule chose et la faire bien. Si une méthode devient trop longue, c’est le signe qu’il faut la découper.
- Privilégiez le retour implicite. C’est le style idiomatique de Ruby.
- Les parenthèses sont souvent optionnelles lors de l’appel d’une méthode.
saluer "Alice"est équivalent àsaluer("Alice"). La convention est de les omettre pour des appels simples, mais de les garder lorsque cela améliore la lisibilité, notamment avec des arguments multiples.
Exercices
-
Calcul de surface :
- Écrivez une méthode
calculer_surface_rectanglequi prend unelargeuret unehauteuren arguments. - La méthode doit retourner (implicitement) la surface calculée.
- Appelez la méthode et affichez le résultat.
- Écrivez une méthode
-
Générateur de message :
- Créez une méthode
creer_emailqui prend undestinataireet unobjetde mail. - Elle doit retourner une chaîne de caractères formatée comme :
À: [destinataire] | Objet: [objet].
- Créez une méthode
-
Méthode avec argument par défaut :
- Reprenez la méthode
creer_email. - Modifiez-la pour que l’argument
objetait la valeur par défaut “Pas d’objet”. - Testez la méthode en l’appelant avec un et deux arguments.
- Reprenez la méthode