我是Ruby新手。我正在尝试将字符串转换为方法调用
红宝石。我打算将所有函数调用存储在Excel工作表中
使用提取的字符串进行实际的方法调用。但我不是
能够转换从excel获得的字符串并将其用作
功能调用。我在某处读到Send()方法有助于转换
字符串到方法调用。但我无法正确使用它。为了
下面提到的代码我为main:Object(NoMethodError)获取了一个“in <top (required)>': undefined method
Execute_Statement(5)”
begin
def Execute_Statement(var1)
puts("Hello",var1)
end
end
x='Execute_Statement(5)' #This would be fed from the Excel Worksheet
send(x)
我做错了什么?
答案 0 :(得分:1)
您可以采用不良做法,即只做eval(x)
。如果不想采用它,请做以下工作:
def Execute_Statement(var1)
puts("Hello",var1)
end
s = "Execute_Statement(5)" # I hope this is coming from your excel cell.
method_name,number = s[/.*(?=\()/],s[/\d+/]
send(method_name,number.to_i)
删除begin..end
块,您的案例不需要它。
答案 1 :(得分:0)
您应该将参数作为发送调用的一部分传递。方法名称也必须是符号。换句话说,将函数名称定义为符号,并将参数定义为单独的变量,然后像这样调用send
:
def Execute_Statement(var1)
puts("Hello",var1)
end
method_name = 'Execute_Statement'.to_sym
parameter = 5
send(method_name,parameter)
如上述评论者所说,这似乎不是一个好主意。