Forum: Italian Ruby user group variabili dinamiche

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
0fc8cdefe9375828e65e650b73887ac1?d=identicon&s=25 Simone R. (athlon)
on 2016-08-23 16:19
Ciao a tutti,

sto processando riga per riga un file CVS.

uno dei campi della riga e' un identificativo univoco che mi indentifica
il "proprietario" di quella riga.


a priori non so quanti "proprietari" ci sono nel file .


come posso fare a creare delle nuove variabili in cui registrare dei
cumulativi in runtime ?


L'idea che mi era venuta era semplicemente di nominare la variabili con
una concatenazione tra una stringa fissa ed il nome del proprietario ,
in modo che automaticamente i valori fossero registrati nella casella
giusta.


in questo modo devo solo tenere traccia in un array di quanti differenti
proprietari esistono per poi accedere alle variabili direttamente.


Vi sembra una strada fattibile ?



-----------ESEMPIO-----------------------

lara,10,2,11
marco,20,4,5
gigi,30,40,20
lara,20,30,11

cumulativo_1_lara=30
cumulativo_2_lara=32
cumulativo_3_lara=22

cumulativo_1_marco=20
etc


----------------------------------------

quello che mi interessa e' sapere se e' possibile fare delle variabili
con nomi dinamici in modo che a runtime se nel file c'e' un nuovo
"proprieatario" vengano create al volo le variabili giuste
7de465f222e6a9c7fe658e370d0bfe05?d=identicon&s=25 Paolo Montrasio (pmontrasio)
on 2016-08-25 21:21
Il modo più semplice è creare un Hash, usare i nomi delle persone come
chiavi dell'hash e nel valore corrispondente ad ogni persona tieni il
conto del suo cumulativo.
0fc8cdefe9375828e65e650b73887ac1?d=identicon&s=25 Simone R. (athlon)
on 2016-08-26 02:24
questo pero' obbliga a fare un sacco di operazioni , tutte le volte che
leggi un "proprietario" devi controllare in tutto l' hash se esiste gia'
, se non esiste devi aggiungerlo, cosa che invece creando al volo le
variabili con il nome del proprietario non devi fare perche' se l'hai
gia' usata contiene gia' un valore , se non l'hai mai usata contiene
zero
7de465f222e6a9c7fe658e370d0bfe05?d=identicon&s=25 Paolo Montrasio (pmontrasio)
on 2016-08-27 07:07
Sono poche righe e una sola struttura dati, contro probabilmente poche
righe e forse centinaia di variabili di cui tra l'altro non conosci a
priori il nome e quindi poi non sai neppure come ispezionare. Finisce
che ti serve un hash per tenerne traccia ed iterarvi. È un approccio che
in trent'anni non ho mai visto usare in linguaggi dinamici. In quelli
statici ovviamente non ci si pensa neppure.

Sono sicuro però che con la metaprogrammabile di Ruby in qualche modo si
può costruire il nome di una variabile. Di sicuro si possono creare
attributi in un oggetto. Se pensi a come si implementano in C un hash,
la struttura dati di un oggetto e l'elenco delle variabili, vedrai che
non c'è molta differenza. E Ruby è scritto in C.

Ti invito a provare entrambe le implementazioni e poi giudica ti quale
sia la più pratica.
This topic is locked and can not be replied to.