Hi, let’s imagine a method “my_method()” whic allows any number of
parameters.
And I need to create those parameters list in the following way:
lalalala = false
if lalalala
params = “:user, ‘alice’, 1456”
else
params = “:user, 0000”
end
After it I must invoke the method with “params” string as parameters.
I expected that the following could work but it fails:
my_object.my_method(eval(params))
=> SyntaxError: (eval):1: syntax error, unexpected ‘,’, expecting $end
:user, 0000
^
So I don’t understand how to use eval to achieve it. Any help please?
Thanks a
lot.
Why not use a plain old Array?
lalalala = false
if lalalala
params = [:user, ‘alice’, 1456]
else
params = [:user, 0000]
end
my_object.my_method(*params)
Regards
Jan F.
El Martes, 1 de Diciembre de 2009, Jan F. escribió:
Why not use a plain old Array?
lalalala = false
if lalalala
params = [:user, ‘alice’, 1456]
else
params = [:user, 0000]
end
my_object.my_method(*params)
Yes! I missed that!
Thanks a lot.
On Tue, Dec 1, 2009 at 1:31 PM, Iñaki Baz C. [email protected] wrote:
Yes! I missed that!
If you do have a string with comma-separated values, you can do this
(a little hackish, though):
irb(main):001:0> a = “:user, ‘alice’”
=> “:user, ‘alice’”
irb(main):011:0> def m *params
irb(main):012:1> p params
irb(main):013:1> end
=> nil
irb(main):014:0> args = eval("[#{a}]")
=> [:user, “alice”]
irb(main):015:0> m *args
[:user, “alice”]
=> nil
Jesus.