Dire che ho questo hash:Rubino valori di direzione all'interno di un hash in variabili locali
entry = {"director"=>"Chris Nolan", "prducer"=>"Sum Duk", "writer"=>"Saad Bakk"}
Voglio estrarre ogni tasto nella propria variabile locale con il valore associato:
director = "Chris Nolan"
producer = "Sum Duk"
...
Utilizzando un ciclo e non:
director = entry["director"]
Poiché ci sono molti valori e non voglio farlo individualmente.
Ho trovato questo che funziona quasi perfettamente tranne che crea una variabile di istanza e voglio una variabile locale, ma local_variable_set
non esiste per qualche motivo.
entry.each_pair { |k, v| instance_variable_set("@#{k}", v) }
C'è una soluzione? Oppure, in caso contrario, un modo per trasformare una variabile di istanza in una locale e cancellare quella di istanza senza eseguirla una alla volta?
Qual è il motivo che non puoi rimanere nell'hash e puoi accedervi da lì? Presumibilmente, stai usando le variabili locali più tardi - non sarebbe altrettanto facile usare i valori hash? – Pavling
Se si utilizza Rails (o solo ActiveSupport), è possibile utilizzare il seguente one-liner: 'director, producer, writer = entry.values_at ('director', 'producer', 'writer')'. È spiacevole dover digitare due volte il nome di ciascuna variabile (invece di zero volte come richiesto), ma è ancora il modo più conciso che ho trovato per farlo. – antinome
possibile duplicato di [Come creare dinamicamente una variabile locale?] (Http://stackoverflow.com/questions/18552891/how-to-dynamically-create-a-local-variable) – Ajedi32