JeuWeb - Crée ton jeu par navigateur
[Ruby] Les tableaux associatifs - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Ruby] Les tableaux associatifs (/showthread.php?tid=4106)



[Ruby] Les tableaux associatifs - Sephi-Chan - 17-06-2009

Les tableaux associatifs

Les tableaux associatifs, plus souvent appelés hashes, sont très proches de tableaux vus précédemment. La différence est qu'au lieu d'avoir une clé numérique, la clé peut ici être une chaîne, un symbole ou un entier (d'autres données peuvent être utilisées, mais nous ne l'aborderont pas dans le cours).
  • Déclaration d'un hash
  • Accéder et modifier des éléments
  • Ajouter des éléments
  • Parcourir un hash


Déclaration d'un hash

Les symboles forment un type de données bien particulier, nous ne les étudierons pas pour le moment. Nous les utiliseront cependant en tant que clé pour les gains de performances qu'ils apportent par rapport à d'autres types de clés.

Un symbole se note de la même façon qu'une variable, à la différence près qu'il est précédé du caractère deux points (Smile, comme ce Confusedymbole !


Voici la déclaration d'un hash :


profil = {
:force => 24,
:agilite => 31,
:endurance => 30
}

Par rapport aux tableaux, deux différences majeurs :
  • On utilise ici des accolades lors de la déclaration à la place des crochets ;
  • Les éléments sont des paires : on associe un symbole à une valeur.



Accéder et modifier des éléments

Pour accéder aux éléments des hashes, ça ressemble une fois de plus aux tableaux. On accède aux éléments par leur clé.


profil = { :force => 24, :agilite => 31, :endurance => 30 }
puts profil[:force] # 24
profil[:force] += 3
puts profil[:force] # 27

Pour supprimer un élément, on utilise la méthode <gras>delete</gras>


profil = { :force => 24, :agilite => 31, :endurance => 30 }
puts profil[:force] # 24
profil.delete :force
puts profil[:force] # nil



Ajouter des éléments

Pour ajouter un élément, on donne une valeur à une clé qui n'existe pas. Smile


profil = { :force => 24, :agilite => 31, :endurance => 30 }
profil[:intelligence] = 29
puts profil[: intelligence] # 29



Parcourir un hash

Pour parcourir les hash, on utilise les mêmes méthodes que pour les tableaux. Voici trois façons de faire qui ont toutes le même rendu :


profil = { :force => 24, :agilite => 31, :endurance => 30 }

for caracteristique in profil
puts "#{caracteristique[0]} : #{caracteristique[1]}"
end

profil.each { |caracteristique, valeur| puts "#{caracteristique} : #{valeur}" }

profil.each do |caracteristique, valeur|
puts "#{caracteristique} : #{valeur}"
end
Code :
force : 24
agilite : 31
endurance : 30

On constate deux choses :
  • Quand on utilise for, chaque élément du hash est représenté par un tableau classique dont la clé est le premier élément et la valeur le second.
  • Quand on utilise each, on utilise deux variables qui vont respectivement contenir la clé et la valeur.


Sephi-Chan


RE: [Ruby] Les tableaux associatifs - keke - 18-06-2009

Peut-on trier selon les éléments de ce tableau selon un ordre particulier (alphabétique, numérique, etc ..)
Peut-on scinder un tableau associatif en plusieurs tableaux ?

kéké


RE: [Ruby] Les tableaux associatifs - Sephi-Chan - 20-06-2009

Oxman, toi z'ici ? :O
C'est cool que tu ai répondu. J'avais zappé le message de Kéké.
Je rajouterai les fonctions de tri dans l'article.


Sephi-Chan


RE: [Ruby] Les tableaux associatifs - keke - 22-06-2009

Bon retour par Minou Oxman ^^.

Kéké