使用字符串作为函数名称

我必须创建一个generics函数,用于调用许多其他函数,具体取决于我获得的访问。 对于Ex:

def func1 @access = ['public','private','protected'] for acc in @access @temp = "get_"+acc[1]+"_data" end end def get_public_data end def get_private_data end def get_protected_data end 

但是@temp将它作为字符串并将其分配给它。 请尽快帮助。

谢谢

在Ruby中,方法实际上就是消息。 所以你可以使用, send方法发送消息名称:

 s = 'xyz' i = s.send 'length' # i = 3 
 @temp = send "get_#{acc[1]}_data" 

使用#{acc[1]}代替“+”

不知道你正在使用什么语言,但有些语言,例如Perl有一个eval()函数可以完成你正在尝试的。

如果您使用Perl或Python,您可能会尝试类似的东西

@temp = eval(“get _”+ acc 1 +“_ data”)