Ruby/Méthodes
Dans ce chapitre, nous verrons ce que sont les fonctions, ou peut-être devrais-je dire les méthodes. Comme en Ruby tout est objet, toutes les fonctions sont des méthodes. Dans ce contexte, on peut donc considérer que ces deux termes sont interchangeables, ainsi je les utiliserai tous deux pour désigner la même chose. Pour les désigner, nous pouvons également utiliser le terme de sous-programme.
Définition
[modifier | modifier le wikicode]Une méthode est un ensemble d'instructions réalisant une certaine tâche (par exemple : faire une addition, créer une fenêtre, etc.).
La définition des méthodes débute par le mot-clé def
et se clôt par un end
.
# définition de la méthode doubler
def doubler
# actions à effectuer
end
Une fonction peut prendre des paramètres (ou arguments) lors de l'appel, nous le verrons à la fin du chapitre.
Elle peut également avoir une valeur de retour, mais ce n’est pas obligatoire.
Procédures
[modifier | modifier le wikicode]Pour comprendre, rien de mieux qu'un petit exemple, considérons une procédure qui dit "bonjour" et ne renvoie rien :
def bonjour
puts "Bonjour !"
end
Cette procédure ne fait qu'un affichage. Pour l’utiliser (j'utiliserai à présent le terme d'appel de fonction / procédure / méthode), on se contente de :
bonjour
L'appel est similaire à celui de puts
ou print
, que nous avons déjà utilisées. Une procédure peut contenir à peu près tout ce que vous voulez.
Les procédures peuvent par exemple vous éviter de devoir réécrire plusieurs fois des blocs d'instructions identiques que vous appelez souvent : vous écrivez une fois la procédure et vous l'appellerez plusieurs fois.
Fonctions avec valeur de retour
[modifier | modifier le wikicode]Ici aussi un exemple vous aidera à comprendre de suite. Nous allons considérer une fonction somme
, effectuant la somme de deux entiers, mais comme nous n'avons pas encore approfondi le passage de paramètres, nous utiliserons des variables déclarées en dehors de la fonction :
$x=4; $y=5;
def somme
return $x + $y # LA ligne intéressante
end
puts somme
Ce que vous devez remarquer dans ce code est le mot-clé return
, celui-ci retourne une valeur et met fin à la fonction (si vous avez d'autres instructions après, elles ne seront pas exécutées). Ici somme
retourne 4 + 5, soit 9. Cette valeur peut être récupérée lors de l'appel, dans notre exemple, nous l'utilisons avec puts
pour faire un affichage, mais nous pouvons tout aussi bien faire :
puts somme + somme # => 18
Une telle fonction peut aussi être appelée comme une procédure, c'est-à-dire sans récupérer sa valeur de retour, mais avouez que l’intérêt est minime.
Une fonction ne peut renvoyer qu'une seule chose à la fois, mais cela peut être n’importe quoi : la fonction ne mentionne aucun type pour sa valeur de retour.
Paramètres
[modifier | modifier le wikicode]Nous avons déjà vu avec puts
et print
que vous pouvez passer des arguments à vos fonctions.
Les arguments sont des paramètres qui peuvent influer sur le résultat de l'exécution de la fonction en question. Ils sont indiqués entre parenthèses (elles sont optionnelles), et sont séparés par des virgules.
Ainsi, on va pouvoir réécrire notre fonction somme
de la sorte :
def somme(x, y)
return x + y
end
Si une fonction possède des arguments, ils doivent être précisés lors de l'appel :
puts somme(1, 8)
Le nombre d'arguments lors de l'appel doit être le même que lors de la définition de la fonction.
Dans notre exemple, les variables désignées par x
et y
sont locales à la fonction : si leur nom était déjà utilisé pour des variables déclarées en dehors de la fonction, il est "masqué" par ces variables locales.
Considérons par exemple :
x = 7
def hello(x)
x = 4
end
hello(4)
Dans cet exemple, la variable locale x
, contient la valeur 4 (obtenue lors de l'appel), et non 7.