Variabili "variabili"

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.

A questo punto forse conviene fare:

my_var_name = “pippo”
my_value_name = ‘“abcd”’
eval “def #{my_var_name}; #{my_value_name}; end”
puts pippo

dove cavolo mi mantiene quel contesto?!

C’è anche self.instance_eval che funziona:

my_var_name = “pippo”
my_value_name = ‘“abcd”’
eval("#{my_var_name} = #{my_value_name}")

eval “puts pippo” # ok
self.instance_eval “puts pippo” # ok
puts pippo # errore in ruby ma non in irb !!!

Comunque c’è davvero qualcosa che non quadra; altro esempio:

my_var_name = “pippo”
my_value_name = ‘“abcd”’

Object.module_eval “attr_accessor :#{my_var_name}”
eval("#{my_var_name} = #{my_value_name}")

puts pippo # ruby restituisce “nil” !!!
eval “puts pippo” # ruby restituisc2 pippo !!!

alf

Direi che e’ tutta colpa di Federico che fa domande strane :wink:

On 5/2/06, Alfonso M. [email protected] wrote:

eval “puts pippo” # ok
eval(“#{my_var_name} = #{my_value_name}”)


Chiaroscuro

Liquid Development: http://liquiddevelopment.blogspot.com/

Ok, adesso abbiamo capito come replicare l’errore in irb ma non ho
capito come posso ottenere la variabile pippo in uno script ruby senza
ottenre un bell’errore :frowning:

“Federico G.” [email protected] writes:

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 :smiley: ) 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)

Si infatti. Cerca su http://www.rubycentral.com/book/irb.html alla
voce “Restrictions”. Puoi replicare l’errore su irb con

begin
my_var_name = “pippo”
my_value_name = ‘“abcd”’
eval “#{my_var_name} = #{my_value_name}”

puts pippo
end

Ciao

prova con il metodo del martellone che ti avevo mandato. a me funziona.

On 5/2/06, Federico G. [email protected] wrote:

ma se metto le stesse istruzioni (copia & incolla, sbaglio una volta e
my_var_name = “pippo”
Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


Chiaroscuro

Liquid Development: http://liquiddevelopment.blogspot.com/

non ho seguito bene il thread, ma so che eval può prendere come secondo
parametro anche un oggetto Binding… magari vi viene qualche idea
usando
quello…

On 5/2/06, chiaro scuro [email protected] wrote:

“Federico G.” [email protected] writes:

(NameError)
puts pippo

Chiaroscuro

Liquid Development: http://liquiddevelopment.blogspot.com/


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


Paolo Donà
email me: paolo[dot]dona[at]gmail[dot]com
skype me: paolo[dot]dona

provato, non funzia.

On 5/2/06, Paolo Donà [email protected] wrote:

ma se metto le stesse istruzioni (copia & incolla, sbaglio una
voce “Restrictions”. Puoi replicare l’errore su irb con

[email protected]
Ml mailing list
Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


Chiaroscuro

Liquid Development: http://liquiddevelopment.blogspot.com/

On 5/2/06, Massimiliano M. [email protected] wrote:

Dunque è vero che la variabile pippo nasce e muore all’interno del
contesto della eval.

Ipse dixit:

http://groups.google.com/group/comp.lang.ruby/msg/422ad5daee216181

Beh, questa è una risposta ammazza thread :slight_smile:

Ipse dixit:
http://groups.google.com/group/comp.lang.ruby/msg/422ad5daee216181

Beh, questa è una risposta ammazza thread :slight_smile:

L’ammazzathread era un pochino più avanti:

You don’t have to agree here. Each language designer have different
point of view. I’m not going to change my mind by your “should”.

Ciò però ci costringe o alle martellate, o ad usare variabili “non
locali” ($pippo)

alf

Dunque è vero che la variabile pippo nasce e muore all’interno del
contesto della eval.

Ipse dixit:

http://groups.google.com/group/comp.lang.ruby/msg/422ad5daee216181


Ever wondered who’s on the other side of the screen?
http://buzz.sameplace.cc
Do flatlanders dream of n-dimensional shapes?
http://blog.hyperstruct.net