Les méthodes

Voir la vidéo
Description Sommaire

À de nombreuses reprises dans les chapitres précédents nous avons utilisé des méthodes afin de demander à Ruby d'effectuer une certaine logique par exemple upcase pour transformer une chaîne de caractères en majuscules. Nous allons voir maintenant comment créer nous-mêmes nos propres méthodes.

Une méthode se définit de la manière suivante :

# sans arguments
def nom_de_la_methode
    # code ici

    return "valeur"
end
# avec arguments
def nom_de_la_methode(argument1, argument2, argument3)
 # code ici
end

Les méthodes permettent de stocker en mémoire une certaine logique que l'on pourra utiliser à plusieurs reprises dans la suite de notre code. Elles prennent en général des paramètres et retournent un résultat particulier. En Ruby, contrairement à d'autres langages de programmation, les méthodes retournent systématiquement une valeur. Pour indiquer que la méthode retourne un résultat, on utilisera le mot-clé return, ce mot-clé a aussi pour effet d'arrêter l'exécution du code se situant à l'intérieur de notre méthode. Il est aussi important de noter que, si la méthode ne rencontre aucun return, le résultat de la dernière ligne de code exécutée sera alors retourné.
Par exemple si on souhaite à de multiples reprise convertir un nombre de secondes en nombre de minutes on pourra se créer une méthode convert_to_min

def convert_to_min(secondes)
 seconds / 60
end

puts convert_to_min(3600) # 60

Dans certains cas on souhaitera rendre certains des arguments de notre méthode optionnelle, dans ce cas-là il est possible de préciser une valeur par défaut à un argument en utilisant la syntaxe suivante :

def ma_method(argument_obligatoire, argument_optionnel = "valeur par défaut")

end

Il est aussi possible de créer une méthode qui prend un nombre non défini de paramètres, dans ce cas-là il faudra utiliser le système de splat. En mettant un symbole * devant un paramètre on précise alors à Ruby que ce paramètre est un tableau contenant tous les paramètres passés à la méthode :

def liste(prefix, *noms)
  noms.each do |nom|
    puts "- #{prefix} #{nom}"
  end
end
liste("Salut", 'Marc', 'Jean', 'Marion', 'Manon', 'Marine', 'Jonathan')
# noms aura donc la valeur ['Marc', 'Jean', 'Marion', 'Manon', 'Marine', 'Jonathan']

Il est aussi important de noter que l'on peut utiliser certains caractères spéciaux dans le nom de nos méthodes, comme le !, Le ?, ou encore le signe =.

def ma_method?

end
  • Le signe ? permet en général d'indiquer que la méthode retourne un booléen (vrai ou faux)
  • Le signe ! permet d'indiquer que la méthode modifie l'objet sur lequel elle est appliquée (on parlera de programmation orientée objet dans les prochains chapitres)
  • Le signe =permet d'indiquer que la méthode est un setter (on en parlera aussi plus tard)
Publié
Technologies utilisées
Auteur :
Grafikart
Partager