Afficher le contenu du carnet

Nous allons apprendre dans cette section comment afficher à l’écran le contenu de notre carnet d’adresses. Afficher des structures de données complexes

Nous pouvons toujours taper puts carnet, mais le résultat n’est pas très lisible pour un être humain (essayez dans IRB par vous-même). Nous voudrions mieux définir notre propre moyen pour afficher son contenu.

Comme carnet est un tableau, nous pouvons utiliser l’itérateur Array#each. Commençons par simplement afficher le prénom de nos amis:


carnet.each do |personne|
   puts personne["prénom"]
end

Ce qui affichera:

Nicolas
François
Marina

Noms complets

La prochaine étape est d’afficher les noms complets:


carnet.each do |personne|
   prenom = personne["prénom"]
   nom    = personne["nom de famille"]
   puts prenom + " " + nom
end

Nicolas Rocher François Willemart Marina Nantini

Numéros de téléphone

Rajouter le numéro de téléphone n’est pas plus difficile:


carnet.each do |personne|
   prenom = personne["prénom"]
   nom    = personne["nom de famille"]
   tel    = personne["téléphone"]
   puts prenom + " " + nom
   puts "    " + tel
end

Le résultat:

Nicolas Rocher
   (+33) 02 93 45 49 19
François Willemart
   (+32) 02 679 24 81
Marina Nantini
   (+39) 055 681 32 11

Adresses

Finalement, il ne nous reste plus qu’à afficher les adresses. Voici le code qui devrait effectuer cette requête, en prenant soin d’espacer chaque personne par une nouvelle ligne:


carnet.each do |personne|
   # Nom et téléphone
   prenom = personne["prénom"]
   nom    = personne["nom de famille"]
   tel    = personne["téléphone"]

   puts prenom + " " + nom
   puts "    " + tel

   # Adresse
   rue    = personne["adresse"]["rue"]
   cp     = personne["adresse"]["code postal"]
   ville  = personne["adresse"]["ville"]
   pays   = personne["adresse"]["pays"]

   puts "    " + rue
   puts "    " + cp + ", " + ville
   puts "    " + pays

   # Une ligne vide pour séparer les entrées
   puts "" 
end

Ce qui produira:

Nicolas Rocher
   (+33) 02 93 45 49 19
   Rue du port, 32
   56000, Vannes
   France

François Willemart
   (+32) 02 679 24 81
   Avenue de la tranchée, 14
   1000, Bruxelles
   Belgique

Marina Nantini
   (+39) 055 681 32 11
   Strada di l'amore, 61
   50100, Firenze
   Italia

Et voila le travail !

Exemple pratique: un carnet d’adresses << | Apprenez Ruby | >> Trier les éléments du carnet