< Ruby
fin de la boite de navigation du chapitre

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

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édure

Une fonction qui ne renvoie rien est appelée une procédure.


Procédures

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

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.

Propriété

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

Nous avons déjà vu avec puts et print que vous pouvez passer des arguments à vos fonctions.

Arguments

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)


Propriété

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.

Cet article est issu de Wikiversity. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.