Programme que je fais a un fichier de configuration simple ressemblant à quelque chose comme ça.Comment fausser un index de hachage?
@overlays = {
:foo => "http://www.bar.com",
:bar => nil,
}
Ce que je dois faire est de passer ce hachage et obtenir la sortie suivante. Pour conserver ma configuration comme je le veux, j'ai besoin de faux numéros d'index. Je préférerais ne pas ajouter de chiffres dans le hachage, cela rendrait la configuration un peu moche. J'ai donc joué avec la génération artificielle des nombres pendant la production.
C'est laid, mais je "m juste à jouer avec elle actuellement.
def makenumbers
@numbers = []
length = @overlays.length - 1
(0..length).each do |num|
@numbers.push("#{num}")
end
end
makenumbers
@overlays.each do |key,val|
@numbers.each do |num|
puts "OverlayKey['#{num}']='#{key}'"
puts "OverlayVal['#{num}']='#{val}'"
end
end
Ce qui me donne quelque chose comme ça.
OverlayKey['0']='foo'
OverlayVal['0']='http://www.bar.com'
OverlayKey['1']='foo'
OverlayVal['1']='http://www.bar.com'
OverlayKey['0']='bar'
OverlayVal['0']=''
OverlayKey['1']='bar'
OverlayVal['1']=''
comprendre pourquoi cela ne me donne pas la sortie Je veux, bien que je ne sois pas vraiment sûr de faire ce que je veux sans avoir à ajouter de chiffres dans le hachage pendant la configuration, bien que je ne sois pas vraiment capable de le contourner.
Autre que moi étant l'idiot qui a lu l'API de hash 3 fois aujourd'hui et certains comment manqué with_index. Tout bien que je suppose que c'est un énumérable. Merci. – gregf
Oui, c'est dans Enumerable, donc c'est facile à oublier. Il y a beaucoup de méthodes très utiles dans Enumerable qui s'appliquent à Array et Hash, donc ça vaut la peine d'en lire plus, car cela peut vous faire gagner du temps avec le bon appel contre un gros bidouillage. – tadman
Upvote pour Enumerable - lisez l'API jusqu'à ce que vous connaissiez toutes les différentes constructions dont il dispose, que le (petit) temps passé sera rentable à long terme. –