Sucsate il gioco di parola ma non saprei come altro definirle (e
quindi non riesco nemmeno a cercare bene su google).
Io avrei necessità di assegnare un valore a una variabile (e fin qui
siamo bravi tutti) solo che il nome di questa variabile è contenuto in
una variabile stringa Es. Var = String.new(“pippo”)
Come posso fare per vaorizzare la variabile “pippo” ???
Io avrei necessità di assegnare un valore a una variabile (e fin qui
siamo bravi tutti) solo che il nome di questa variabile è contenuto in
una variabile stringa Es. Var = String.new(“pippo”)
Come posso fare per vaorizzare la variabile “pippo” ???
Sei sicuro che non ti serviva la eval ?
str = “pippo * 8 / 3”
pippo = 5
totale = eval str
pippo = 33
totale = eval str
alf
è molto picchiato dentto con il martello ma funziona…
my_var_name = “pippo”
my_value_name = ‘“abcd”’
Object.module_eval %{
attr_accessor :#{my_var_name}
}
self.instance_eval “self.#{my_var_name} = #{my_value_name}”
puts pippo
PS: invece di Object si dovrebbe usare la singleton class…
On 5/2/06, Federico G. [email protected] wrote:
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml
–
Chiaroscuro
Liquid Development: http://liquiddevelopment.blogspot.com/
Direi che la eval va benissimo per quello che devo fare, purtroppo ne
ignorvo l’esistenza… è ora che mi procuri un ottimo manuale ruby
P.S. il tuo esempio
my_var_name = “pippo”
my_value_name = ‘“abcd”’
eval “#{my_var_name} = #{my_value_name}”
da errore, o esiste già una variabile che si chiama abcd o nella eval
devo fare qualcosa di simile: eval “#{my_var_name} =
“#{my_value_name}””
o perlomeno questo è il modo grezzo che ho trovato io per farlo
funzionare…
Grazie mille
il tuo esempio a me non funziona. è come se uscito dallo scope della eval
la
variabile andasse persa.
On 5/2/06, Alfonso M. [email protected] wrote:
alf_______________________________________________
Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml
–
Chiaroscuro
Liquid Development: http://liquiddevelopment.blogspot.com/
P.S. il tuo esempio
my_var_name = “pippo”
my_value_name = ‘“abcd”’
eval “#{my_var_name} = #{my_value_name}”
Avevi probabilmente dimenticato di ‘apiciare’ gli “apicetti”
(absit iniuria verbis!)
L’eval interno alle stringhe ("… #{espressione} …") è un vero
spasso.
Io uso il Ruby 1.8.2 fornito di serie col Mac OS X (troppo pigro per
upgradare), senza nessuno dei suoi quattro livelli di protezione (che
giocano anzitutto sulle “eval”: cfr. l’esempio del “sito-calcolatore”
nel pragmatic programmer, e l’utente che fa evalutare rm -rf /*
o
qualcosa del genere).
~ irb
irb(main):001:0> x = “turz”
=> “turz”
irb(main):002:0> y = ’ “stringa complicata” ’
=> " “stringa complicata” "
irb(main):003:0> eval " #{x} = #{y} "
=> “stringa complicata”
irb(main):004:0> x
=> “turz”
irb(main):005:0> turz
=> “stringa complicata”
alf
è molto picchiato dentto con il martello ma funziona…
Che differenza c’è tra il tuo esempio e questo “senza martello”?
my_var_name = "pippo"
my_value_name = '"abcd"'
eval "#{my_var_name} = #{my_value_name}"
Da parte mia vado matto per la eval:
a = "def turz ; $$*10 ; end"
eval a
puts turz
E ora pure del codice automodificante:
#!/usr/bin/env ruby
s="aaa"
x=open(__FILE__).readlines
x[2] = "s=#{s.next.inspect}\n"
open(__FILE__, "w").print(x)
puts s
alf_______________________________________________
Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml
è strano. io gli apicetti li avevo ma continua a non andare
sample.rb:15: undefined local variable or method `pippo’ for
main:Object
(NameError)
sono dovuto ricorrere all’eval cor martello che hai visto prima.
uso 1.8.4
On 5/2/06, Alfonso M. [email protected] wrote:
L’eval interno alle stringhe (“… #{espressione} …”) è un vero
~ irb
irb(main):004:0> x
Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml
–
Chiaroscuro
Liquid Development: http://liquiddevelopment.blogspot.com/
ovviamente avevi ragione, mi ero dimenticato di ‘apiciare’
Mi sto divertendo come un pazzo adesso che ho conosciuto la eval
grazie mille
Io uso la 1.8.4 sotto linux e (una volta ‘apicettato’) mi funziona
correttamente.
forse sono io accecato, non so.
io lancio letteralmente il seguente:
##############################
my_var_name = “pippo”
my_value_name = ‘“abcd”’
eval “#{my_var_name} = #{my_value_name}”
puts pippo
##############################
vi funziona?
On 5/2/06, Federico G. [email protected] wrote:
giocano anzitutto sulle “eval”: cfr. l’esempio del “sito-calcolatore”
=> " "stringa complicata" "
Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml
–
Chiaroscuro
Liquid Development: http://liquiddevelopment.blogspot.com/
##############################
my_var_name = “pippo”
my_value_name = ‘“abcd”’
eval “#{my_var_name} = #{my_value_name}”
puts pippo
##############################
Clamorosamente, qui sul Mac (1.8.2 di Natale 2004) funziona (e scrive
abcd).
alf
Sul mio linux mi lascia dubbioso …
se provo istruzione per istruzione in irb mi funziona che è un piacere
ma se metto le stesse istruzioni (copia & incolla, sbaglio una volta e
poi imparo ) in un file eval.rb e provo a eseguirlo con ruby
eval.rb ottengo anche io l’errore
eval.rb:5: undefined local variable or method `pippo’ for main:Object
(NameError)
On 5/2/06, Pilu [email protected] wrote:
Io uso ruby 1.8.4 su ubuntu e funziona
ma in irb o mettendolo in un file ?
On 5/2/06, chiaro scuro [email protected] wrote:
##############################
vi funziona?
Io uso ruby 1.8.4 su ubuntu e funziona
On 5/2/06, Federico G. [email protected] wrote:
Sul mio linux mi lascia dubbioso …
se provo istruzione per istruzione in irb mi funziona che è un piacere
ma se metto le stesse istruzioni (copia & incolla, sbaglio una volta e
poi imparo ) in un file eval.rb e provo a eseguirlo con ruby
eval.rb ottengo anche io l’errore
eval.rb:5: undefined local variable or method `pippo’ for main:Object
(NameError)
hai ragione…anche da me fa la stessa cosa…funziona solo in irb
il mistero si infittisce. se invece di
puts pippo
metto
eval “puts pippo”
funziona.
dove cavolo mi mantiene quel contesto?!
On 5/2/06, Pilu [email protected] wrote:
–
Chiaroscuro
Liquid Development: http://liquiddevelopment.blogspot.com/
se provo istruzione per istruzione in irb mi funziona che è un piacere
ma se metto le stesse istruzioni (copia & incolla, sbaglio una volta e
poi imparo ) in un file eval.rb e provo a eseguirlo con ruby
eval.rb ottengo anche io l’errore
Urka, è vero
Avevo provato anch’io soltanto con “irb”.
Però se al posto di pippo metto $pippo (globale anziché locale)
funziona anche da ruby anziché irb:
my_var_name = "$pippo"
my_value_name = '"abcd"'
eval "#{my_var_name} = #{my_value_name}"
puts $pippo
Dunque è vero che la variabile pippo nasce e muore all’interno del
contesto della eval.
alf
Pilu wrote:
vi funziona?
Io uso ruby 1.8.4 su ubuntu e funziona
demo.rb:4: undefined local variable or method `pippo’ for main:Object
(NameError)
ruby 1.8.4 (2005-12-24) [i686-linux]
su archlinux
On 5/2/06, Alfonso M. [email protected] wrote:
Dunque è vero che la variabile pippo nasce e muore all’interno del
contesto della eval.
eccetto che non muore!
è un incubo, il ritorno delle variabili viventi!
prova eval “puts pippo”