J'ai un fichier CSV que je suis en train d'analyser et d'en insérer des bits dans une base de données. Je voudrais écrire un analyseur qui tient compte du fait que l'ordre des colonnes pourrait changer dans le futur. J'ai pensé que je pourrais le faire en saisissant la ligne d'en-tête comme un tableau, et pour chaque ligne, en mettant la valeur dans une variable locale créée dynamiquement (en utilisant eval). Cependant, cela ne semble pas fonctionner, car les variables locales ne semblent pas accessibles en dehors de l'évaluation. J'ai lu ailleurs que cela peut être correct en Ruby 1.9, mais j'utilise 1.8.7Création dynamique de variables locales dans Ruby
code tel que:
headers = ["a", "b"]
headers.each do |h|
p e_str = h+"=1"
eval(e_str)
end
puts a
ne fonctionne tout simplement pas, ce qui donne
test.rb: 6: variable locale définie ou méthode `a » pour principal: Object (NameError)
si la ligne 3 gravures "a = 1" et "b = 1" comme prévu
Est-ce que quelqu'un sait comment je pourrais m'y prendre?
Ne faites pas cela. Utilisez des méthodes à la place (voir OpenStruct). – Reactormonk