Fonctions

Qu’est-ce qu’une fonction?

Une fonction est une méthode qui n’est pas associée à un objet en particulier.

Vous avez déjà utilisé une fonction auparavant: puts. Remarquez bien la syntaxe:

puts "Salut!"     # à la place de:  un_objet.puts "Salut!"

«Bonjour monde» avec une fonction

Voici une fonction toute simple:


def bonjour 
   puts "Bonjour monde!" 
end

Maintenant, nous avons défini la fonction bonjour. Le code qu’elle contient sera exécuté à chaque appel de la fonction. Un exemple :


def bonjour 
   puts "Bonjour monde!" 
end

bonjour
bonjour

Qui produira:

Bonjour monde!
Bonjour monde!

Comme vous pouvez dès à présent le constater, les fonctions peuvent servir à réutiliser du code facilement.

Paramètres de fonction

Vous savez déjà qu’il est possible de passer des paramètres aux méthodes et fonctions. Mais vous ne savez pas encore comment faire!

Voici la fonction bonjour légèrement améliorée :


def bonjour(nom)
   puts "Bonjour " + nom + ", comment vas-tu" 
end

bonjour("Laurent")
bonjour "Stéfanie" 

Ce qui produira:

Bonjour Laurent, comment vas-tu?
Bonjour Stéfanie, comment vas-tu?

Afficher une adresse

Écrivons maintenant une fonction un peu plus utile. Souvenez-vous des structures d’adresses du chapitre précédent :


# Adresse de Nicolas
adresse_de_nicolas = {
   "rue"         => "Rue du port, 32",
   "code postal" => "56000",
   "ville"       => "Vannes",
   "pays"        => "France" 
}

# Adresse de François
adresse_de_francois = {
   "rue"         => "Avenue de la tranchée, 14",
   "code postal" => "1000",
   "ville"       => "Bruxelles",
   "pays"        => "Belgique" 
}

Voici le code d’une fonction qui permet de les afficher à l’écran :


def affiche_adresse(adresse)
   code_postal = adresse["code postal"]
   ville       = adresse["ville"]

   puts "    " + adresse["rue"]  
   puts "    " + code_postal + ", " + ville 
   puts "    " + adresse["pays"]
end

Maintenant, nous pouvons facilement afficher des adresses:


puts "Nicolas:" 
affiche_adresse(adresse_de_nicolas)

puts "François:" 
affiche_adresse(adresse_de_nicolas)

Ce qui produira à l’écran:


Nicolas:
   Rue du port, 32
   56000, Vannes
   France
François:
   Rue du port, 32
   56000, Vannes
   France

Classes et methodes << | Apprenez Ruby | >> Classes et methodes 2