Say I wanted to run a method based on a condition like so:
class Klass
def initialize
a = '1st'
b = '2nd'
c = '3rd'
end
def a
a
end
def b
b
end
def c
c
end
end
ob = Klass.new
['a','b','c'].do {|x| ob. **here I would want to get at #a and #b and
#c**
or maybe better explained like this
var = 'a'
puts ob.** ??? **
Or if you know perl
$foo = {bar => "baz"};
$baz = "bar";
puts $foo->{$baz};
---> baz
Sorry to be so confusing.
Thanks,
Ken Mitchell

···
--
Farmers Wireless
Office: (256)638-4040 x 224
Mobile: (256)899-3391
Fax: (256)638-2110
kmitchell@farmerswireless.com
CONFIDENTIALITY NOTICE: This e-mail and any attachment to it may contain
confidential and legally privileged information. This information is
intended only for the recipient named above. If you are not the intended
recipient, take notice that any disclosure, copying, distribution or
taking of any action based upon this information is prohibited by law.
If you have received this e-mail in error, please return it to the
sender and delete this copy from your system. Thank you.
Something like this would work:
irb(main):008:0> x = ['chop!', 'chop!', 'chop!']
=> ["chop!", "chop!", "chop!"]
irb(main):009:0> y = "This is a string!!!"
=> "This is a string!!!"
irb(main):010:0> x.each {|method| y.send(method)}
=> ["chop!", "chop!", "chop!"]
irb(main):011:0> y
=> "This is a string"
The send method allows you to do what you're asking. 
--Jeremy
···
On 4/5/07, Ken Mitchell <kmitchell@farmerswireless.com> wrote:
Say I wanted to run a method based on a condition like so:
class Klass
def initialize
a = '1st'
b = '2nd'
c = '3rd'
end
def a
a
end
def b
b
end
def c
c
end
end
ob = Klass.new
['a','b','c'].do {|x| ob. **here I would want to get at #a and #b and #c**
or maybe better explained like this
var = 'a'
puts ob.** ??? **
Or if you know perl
$foo = {bar => "baz"};
$baz = "bar";
puts $foo->{$baz};
---> baz
Sorry to be so confusing.
Thanks,
Ken Mitchell
--
Farmers Wireless
Office: (256)638-4040 x 224
Mobile: (256)899-3391
Fax: (256)638-2110
kmitchell@farmerswireless.com
CONFIDENTIALITY NOTICE: This e-mail and any attachment to it may contain
confidential and legally privileged information. This information is
intended only for the recipient named above. If you are not the intended
recipient, take notice that any disclosure, copying, distribution or taking
of any action based upon this information is prohibited by law. If you have
received this e-mail in error, please return it to the sender and delete
this copy from your system. Thank you.
--
http://www.jeremymcanally.com/
My free Ruby e-book:
http://www.humblelittlerubybook.com/book/
My blogs:
http://www.rubyinpractice.com/
Yes that does exactly what I wanted.
['a','b','c'].do {|x| ob.send(x)}
···
On Fri, 2007-04-06 at 07:30 +0900, Jeremy McAnally wrote:
Something like this would work:
irb(main):008:0> x = ['chop!', 'chop!', 'chop!']
=> ["chop!", "chop!", "chop!"]
irb(main):009:0> y = "This is a string!!!"
=> "This is a string!!!"
irb(main):010:0> x.each {|method| y.send(method)}
=> ["chop!", "chop!", "chop!"]
irb(main):011:0> y
=> "This is a string"
The send method allows you to do what you're asking. 
--Jeremy
On 4/5/07, Ken Mitchell <kmitchell@farmerswireless.com> wrote:
>
> Say I wanted to run a method based on a condition like so:
>
> class Klass
> def initialize
> a = '1st'
> b = '2nd'
> c = '3rd'
> end
>
> def a
> a
> end
>
> def b
> b
> end
>
> def c
> c
> end
> end
>
> ob = Klass.new
> ['a','b','c'].do {|x| ob. **here I would want to get at #a and #b and #c**
>
> or maybe better explained like this
>
> var = 'a'
>
> puts ob.** ??? **
>
> Or if you know perl
> $foo = {bar => "baz"};
> $baz = "bar";
>
> puts $foo->{$baz};
>
> ---> baz
>
> Sorry to be so confusing.
>
>
>
>
>
> Thanks,
>
> Ken Mitchell
> --
>
> Farmers Wireless
> Office: (256)638-4040 x 224
> Mobile: (256)899-3391
> Fax: (256)638-2110
> kmitchell@farmerswireless.com
>
>
>
> CONFIDENTIALITY NOTICE: This e-mail and any attachment to it may contain
> confidential and legally privileged information. This information is
> intended only for the recipient named above. If you are not the intended
> recipient, take notice that any disclosure, copying, distribution or taking
> of any action based upon this information is prohibited by law. If you have
> received this e-mail in error, please return it to the sender and delete
> this copy from your system. Thank you.
>
>
>
>
--
Ken Mitchell <kmitchell@farmerswireless.com>
Now I need to do something similar, but probably more difficult.
class Klass
class SubKlass1
def initialize
end
end
class SubKlass2
def initialize
end
end
end
foo = "SubKlass1"
bar = Klass::send(foo).new **That is wrong, because method SubKlass1
doesn't exist in Klass::Class. But I think you get my point.

···
On Fri, 2007-04-06 at 07:30 +0900, Jeremy McAnally wrote:
Something like this would work:
irb(main):008:0> x = ['chop!', 'chop!', 'chop!']
=> ["chop!", "chop!", "chop!"]
irb(main):009:0> y = "This is a string!!!"
=> "This is a string!!!"
irb(main):010:0> x.each {|method| y.send(method)}
=> ["chop!", "chop!", "chop!"]
irb(main):011:0> y
=> "This is a string"
The send method allows you to do what you're asking. 
--Jeremy
On 4/5/07, Ken Mitchell <kmitchell@farmerswireless.com> wrote:
>
> Say I wanted to run a method based on a condition like so:
>
> class Klass
> def initialize
> a = '1st'
> b = '2nd'
> c = '3rd'
> end
>
> def a
> a
> end
>
> def b
> b
> end
>
> def c
> c
> end
> end
>
> ob = Klass.new
> ['a','b','c'].do {|x| ob. **here I would want to get at #a and #b and #c**
>
> or maybe better explained like this
>
> var = 'a'
>
> puts ob.** ??? **
>
> Or if you know perl
> $foo = {bar => "baz"};
> $baz = "bar";
>
> puts $foo->{$baz};
>
> ---> baz
>
> Sorry to be so confusing.
>
>
>
>
>
> Thanks,
>
> Ken Mitchell
> --
>
> Farmers Wireless
> Office: (256)638-4040 x 224
> Mobile: (256)899-3391
> Fax: (256)638-2110
> kmitchell@farmerswireless.com
>
>
>
> CONFIDENTIALITY NOTICE: This e-mail and any attachment to it may contain
> confidential and legally privileged information. This information is
> intended only for the recipient named above. If you are not the intended
> recipient, take notice that any disclosure, copying, distribution or taking
> of any action based upon this information is prohibited by law. If you have
> received this e-mail in error, please return it to the sender and delete
> this copy from your system. Thank you.
>
>
>
>
Thanks,
Ken Mitchell
--
Farmers Wireless
Office: (256)638-4040 x 224
Mobile: (256)899-3391
Fax: (256)638-2110
kmitchell@farmerswireless.com
CONFIDENTIALITY NOTICE: This e-mail and any attachment to it may contain
confidential and legally privileged information. This information is
intended only for the recipient named above. If you are not the intended
recipient, take notice that any disclosure, copying, distribution or
taking of any action based upon this information is prohibited by law.
If you have received this e-mail in error, please return it to the
sender and delete this copy from your system. Thank you.
Have a look at Module#const_get. I think this is what you wanted:
bar = Klass.const_get(foo).new
=> #<Klass::SubKlass1:0x2b5a3216e470>
Dan
Ken Mitchell wrote:
···
Now I need to do something similar, but probably more difficult.
class Klass
class SubKlass1
def initialize
end
end
class SubKlass2
def initialize
end
end
end
foo = "SubKlass1"
bar = Klass::send(foo).new **That is wrong, because method SubKlass1
doesn't exist in Klass::Class. But I think you get my point.
On Fri, 2007-04-06 at 07:30 +0900, Jeremy McAnally wrote:
Something like this would work:
irb(main):008:0> x = ['chop!', 'chop!', 'chop!']
=> ["chop!", "chop!", "chop!"]
irb(main):009:0> y = "This is a string!!!"
=> "This is a string!!!"
irb(main):010:0> x.each {|method| y.send(method)}
=> ["chop!", "chop!", "chop!"]
irb(main):011:0> y
=> "This is a string"
The send method allows you to do what you're asking. 
--Jeremy
On 4/5/07, Ken Mitchell <kmitchell@farmerswireless.com <mailto:kmitchell@farmerswireless.com>> wrote:
>
> Say I wanted to run a method based on a condition like so:
>
> class Klass
> def initialize
> a = '1st'
> b = '2nd'
> c = '3rd'
> end
>
> def a
> a
> end
>
> def b
> b
> end
>
> def c
> c
> end
> end
>
> ob = Klass.new
> ['a','b','c'].do {|x| ob. **here I would want to get at #a and #b and #c**
>
> or maybe better explained like this
>
> var = 'a'
>
> puts ob.** ??? **
>
> Or if you know perl
> $foo = {bar => "baz"};
> $baz = "bar";
>
> puts $foo->{$baz};
>
> ---> baz
>
> Sorry to be so confusing.
>
>
>
>
>
> Thanks,
>
> Ken Mitchell
> --
>
> Farmers Wireless
> Office: (256)638-4040 x 224
> Mobile: (256)899-3391
> Fax: (256)638-2110
> kmitchell@farmerswireless.com <mailto:kmitchell@farmerswireless.com>
>
>
>
> CONFIDENTIALITY NOTICE: This e-mail and any attachment to it may contain
> confidential and legally privileged information. This information is
> intended only for the recipient named above. If you are not the intended
> recipient, take notice that any disclosure, copying, distribution or taking
> of any action based upon this information is prohibited by law. If you have
> received this e-mail in error, please return it to the sender and delete
> this copy from your system. Thank you.
>
>
>
>
Thanks,
Ken Mitchell
--
Farmers Wireless
Office: (256)638-4040 x 224
Mobile: (256)899-3391
Fax: (256)638-2110
kmitchell@farmerswireless.com
*CONFIDENTIALITY NOTICE:* This e-mail and any attachment to it may
contain confidential and legally privileged information. This
information is intended only for the recipient named above. If you are
not the intended recipient, take notice that any disclosure, copying,
distribution or taking of any action based upon this information is
prohibited by law. If you have received this e-mail in error, please
return it to the sender and delete this copy from your system. Thank you.