JeuWeb - Crée ton jeu par navigateur

Version complète : [Ruby] Les tableaux
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Les tableaux

Les tableaux (arrays, en anglais) diffèrent beaucoup des entiers et des chaînes de caractères ! En effet, un entier ne contient qu'une donnée. Les tableaux, eux, peuvent contenir plusieurs données ! Et ces données peuvent être de types différents.

Ces structures de données contiennent donc plusieurs cases. Ces cases ont des numéros, qu'on appelle les clés. La clé du premier élément d'un tableau est 0.
  • Déclaration
  • Accéder aux éléments
  • Modifier les éléments
  • Ajouter des éléments
  • Parcourir les tableaux


Déclaration

Pour déclarer un tableau, plusieurs moyens s'offrent à nous.

    Code RUBY
puts [ "Pâté en croûte", "Jambon fumé", "Saucisson sec" ].join ", "
puts %w@ Août Septembre Octobre @.join ", "
puts Array.new(4, "1 Euro").join ", "
puts Array.new(4){ |i| i + 1 }.join ", "

Code :
Pâté en croûte, Jambon fumé, Saucisson sec
Août, Septembre, Octobre
1 Euro, 1 Euro, 1 Euro, 1 Euro
1, 2, 3, 4

Voyons ce qui se passe sur chaque ligne :
  • On voit qu'on peut définir un tableau en séparant les éléments par des virgules, le tout entre des crochets.
  • Cela doit vous rappeler les %q du chapitre précédent : on définit un délimiteur et c'est l'espace qui sépare chaque élément.
  • On peut demander directement d'avoir un nombre d'élément et donner une valeur à ces éléments.
  • Voici un itérateur en action. Nous reviendrons sur les itérateurs plus tard dans le chapitre.

Mine de rien, on vient de découvrir la méthode <gras>join</gras> d'un tableau, qui permet de rassembler les éléments du tableau sous forme d'une chaîne de caractère en séparant les éléments par une virgule.



Accéder aux éléments

Pour accéder aux éléments du tableau, il suffit d'indiquer la clé entre crochets.

    Code RUBY
alphabet = ("a".."z").to_a
 
puts alphabet.join ", "
puts alphabet[1, 3].join ", " # On récupère 3 éléments à compter du second.
puts alphabet[0..3].join ", " # On récupère les éléments 0 à 4.
puts alphabet[-1] # On récupère le dernier élément.
puts alphabet[-2] # On récupère l'avant-dernier élément.
puts alphabet[-3, 2].join ", " # On récupère 2 éléments à compter de l'antépénultième (l'avant-avant-dernier).

Code :
a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z
b, c, d
a, b, c, d
z
y
x, y

Remarquez la définition à partir d'une gamme que l'on retourne sous forme de tableau. Nous étudierons les gammes plus loin dans le chapitre. 2



Modifier les éléments

À nouveau, on peut modifier les éléments en y accédant par leur indice.

    Code RUBY
courses = [ "Huile d'olive", "Chocolat au lait", "Jus d'orange" ]
puts courses.join ", "
 
# On modifie le premier élément.
courses[0] = "Pâté en croûte"
puts courses.join ", "
 
# On modifie 2 éléments à compter du deuxième.
courses[1, 2] = [ "Mandarines", "Pommes" ]
puts courses.join ", "
 
# On remplace les 3 premiers éléments.
courses[0..2] = [ "Mandarines", "Pommes" ]
puts courses.join ", "
 
# On change la valeur du troisième élément.
courses[2] = nil
puts courses.join ", "
 
# On supprime le troisième élément.
courses.delete_at 2
puts courses.join ", "


Notez la différence qu'il y a entre la suppression d'une clé et le remplacement de sa valeur par nil (qui exprime le vide, nous y reviendrons).

Code :
Huile d'olive, Chocolat au lait, Jus d'orange
Pâté en croûte, Chocolat au lait, Jus d'orange
Pâté en croûte, Mandarines, Pommes
Mandarines, Pommes
Mandarines, Pommes,
Mandarines, Pommes



Ajouter des éléments

Comme souvent, il y a plusieurs moyens d'ajouter des éléments à un tableau.

    Code RUBY
taches = [ "Aller chercher le pain", "Continuer le cours" ]
puts taches.join ", "
 
# On ajoute un élément à la fin.
taches << "Réviser les partielles"
puts taches.join ", "
 
# On ajoute un élément à la fin.
taches.push "Réviser encore un peu"
puts taches.join ", "
 
# On insère un élément avant le deuxième élément.
taches.insert(1, "Boire")
puts taches.join ", "
 
# On insère un élément là où il n'y a rien.
taches[7] = "Arrêter de réviser (…)"
puts taches.join ", "

Code :
Aller chercher le pain, Continuer le cours
Aller chercher le pain, Continuer le cours, Réviser les partielles
Aller chercher le pain, Continuer le cours, Réviser les partielles, Réviser encore un peu
Aller chercher le pain, Boire, Continuer le cours, Réviser les partielles, Réviser encore un peu
Aller chercher le pain, Boire, Continuer le cours, Réviser les partielles, Réviser encore un peu, , , Arrêter de réviser (…)

Quand on place du contenu à un index qui n'a pas de prédécesseur direct, Ruby remplit les cases avec du vide. C'est ainsi qu'on obtient les 2 valeurs nil avant le dernier élément.



Parcourir les tableaux

Pour parcourir les tableau, plusieurs solutions s'offrent à nous, en voici quelques unes qui ont exactement le même rendu :

    Code RUBY
armes = [ "Le dernier sourire", "Pavois du briseur", "Plaie de Veranus" ]
 
for arme in armes
  puts arme
end
 
armes.each do |arme|
  puts arme
end
 
armes.each { |arme| puts arme }


Code :
Le dernier sourire
Pavois du briseur
Plaie de Veranus

Les deuxième et troisième façons de faire sont similaires, seule la forme change. Elles utilisent des itérateurs, que nous verrons plus en détail dans la suite du cours.


Sephi-Chan
Youpi 2
Depuis le temps que je voulais commencer Ruby 34
Merci
URLs de référence