Leçons de niveau 14

Ruby/Méthodes

Une page de Wikiversité.
Aller à la navigation Aller à la recherche
Début de la boite de navigation du chapitre
Méthodes
Icône de la faculté
Chapitre no 5
Leçon : Ruby
Chap. préc. :Opérateurs
Chap. suiv. :Conditions
fin de la boite de navigation du chapitre
Icon falscher Titel.svg
En raison de limitations techniques, la typographie souhaitable du titre, « Ruby : Méthodes
Ruby/Méthodes
 », n'a pu être restituée correctement ci-dessus.

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.

Paramètres[modifier | modifier le wikicode]

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


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)



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.