使用字符串作为函数名称

时间:2009-05-18 14:00:28

标签: ruby string

我必须创建一个泛型函数,用于调用许多其他函数,具体取决于我获得的访问。 对于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将其作为字符串并将其分配给它。 请尽快帮助。

谢谢

3 个答案:

答案 0 :(得分:3)

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

s = 'xyz'
i = s.send 'length'
# i = 3

答案 1 :(得分:2)

@temp = send "get_#{acc[1]}_data"

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

答案 2 :(得分:0)

不知道您使用的是哪种语言,但某些语言(即Perl)具有eval()功能,可以完成您正在尝试的功能。

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

的内容
  

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