#1 Le 14/11/2007, à 17:18
- mickro
[resolu] [ruby] utilisation de each
Bonjour,
je cherche à parcourir un tableau par couple, alors j'ai essayé ceci dans irb :
["a", "b", "c", "d"].each { |x,y| puts x; puts y}
mais j'obtiens :
a
nil
b
nil
c
nil
d
nil
alors que je voudrais obtenir
a
b
c
d
La chose qui ne doit pas changer c'est le tableau.
Si vous avez la réponse ...
Dernière modification par mickro (Le 20/11/2007, à 21:00)
__mickro__
Hors ligne
#2 Le 14/11/2007, à 17:35
- vinc-mai
Re : [resolu] [ruby] utilisation de each
Le mieux je pense serait de faire un tableau de couple:
array=[["a","b"],["c","d"],["e","f"]]
array.each{|x| puts x[0];puts x[1]}
sinon
array=["a", "b", "c", "d"]
for i=0..(array.length/2)-1
puts array[2*i]
puts array[2*i+1]
end
J'ai pas testé car j'ai pas ruby sous la main.
Tu n'expliques pas ce que tu comptes faire mais si çà se trouve l'utilisation de "hash" serait plus indiquée que celle de "array".
Dernière modification par vinc-mai (Le 14/11/2007, à 17:47)
Hors ligne
#3 Le 14/11/2007, à 18:02
- vinc-mai
Re : [resolu] [ruby] utilisation de each
["a", "b", "c", "d"].each { |x,y| puts x; puts y}
ne marche pas car:
la méthode "each" éxécute un bloc de code {puts x; puts y} pour chaque chaque élément ("a" puis "b" puis "c"...) du tableau ["a", "b", "c", "d"]. Les éléments du tableau sont passés par l'intermédière de la variables |x|. y étant non défini car each ne passe qu'un élément à chaque "itération", sa valeur vaut nil.
Hors ligne
#4 Le 14/11/2007, à 18:24
- alexmic
Re : [resolu] [ruby] utilisation de each
Personnellement sur les tableaux à une dimension je préfère la syntaxe suivante
["a", "b", "c", "d"].each do |t|
puts t
end
je trouve ça plus compréhensible
Après sur ta syntaxe.... Tu n'as qu'un tableau u UNE dimension... impossible donc de yielder (désolé pour le néologisme) deux paramètres. To code doit être ça :
["a", "b", "c", "d"].each { |x| puts x}
Pour avoir x et y dans les paramêtres il faudrait deux indentations (pour tenter d'être plus clair)...
Soit un tableau de tableaux (cà d un tableau à deux dimensions du type)
[["a", "b", "c", "d"],["1", "2", "3", "4"]].each do |t,y|
puts t
puts y
end
ou bien
[["a", "b", "c", "d"],["1", "2", "3", "4"]].each { |x,y| puts x; puts y}
Voilà
PS je ne sais plus si c'est la bonne façon de créer des tableaux 2d en ruby... à voir donc.
Dernière modification par alexmic (Le 14/11/2007, à 18:28)
OMG Lawl pwnd rofl... Plaît-il?
Hors ligne
#5 Le 20/11/2007, à 20:59
- mickro
Re : [resolu] [ruby] utilisation de each
Salut,
merci, vous avez tous raison y'a pas de doute même si ce n'est pas ce que je voulais.
Ca m'a permis de me dire que je n'étais pas dans la bonne direction. J'ai donc abandonné mon tableau.
Maintenant, lit chaque couple x, y à l'aide de : x = mon_tableau_de_valeurs.first; y = mon_tableau_de_valeurs.first
Mes explications ne doivent pas être très compréhensibles mais je m'en suis sorti Merci donc.
__mickro__
Hors ligne