Contents of variable as variable name

H

hemant

I know that sounds a bit crazy, but is there a way to do that?

One way of doing it is:

irb(main):025:0> a = "foo"
"foo"
irb(main):026:0> eval "#{a}=1"
1
irb(main):027:0> foo
1

Although eval is normally discouraged and must be used sparingly.
 
S

sy1234

Rob Kerfia said the following on 07/14/2007 11:10 PM:
I know that sounds a bit crazy, but is there a way to do that?
oh oh oh .. I asked this question and did a bit of experimentation a
while back.

I found a blank spot in my wiki where I was supposed to have written it
all down, but I guess I didn't get around to it. I just found and
dumped some notes in just now.. maybe something there will help inspire you:

http://jrandomhacker.info/Ruby_code_snippets/patching_strings_together_to_make_a_variable

if eval isn't appropriate, then this snippet might work:

@ab = "pass"
puts instance_variable_get("@#{"a" + "b"}")
 
S

Sy Ali

Don't do it. If you think you need to, it is indicative of bad design.
There are significant dangers involved. The following is about Perl rather
than Ruby, but the concept is the same:

http://perl.plover.com/varvarname.html
http://perl.plover.com/varvarname2.html
http://perl.plover.com/varvarname3.html

Thanks for the reading. This helped me avoid learning a Bad habit.

This comment from the second document summed it up for me:
The real problem is that if your string contains something
unexpected, it will sabotage a totally unrelated part of the program,
and then you will have one hell of a time figuring out the bug.

Now the next time I itch to do something like this I'll explore using
a hash instead.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,057
Latest member
KetoBeezACVGummies

Latest Threads

Top