2010-08-26 26 views
1

我想定义一组函数,我可以传递给定的参数。在Ruby/Rails中快速定义方法 - 如何设置参数?

例如,我如何执行以下操作?

>> get_1_type("xxx") 

V4_RELATIONSHIP_TYPES=[1=>2,3=>4] 

V4_RELATIONSHIP_TYPES.keys.each do |key| 
self.class.send(:define_method, "get_#{key}_type".downcase) do 
    return GuidInfo.get_or_new(PARAMS, V4_RELATIONSHIP_TYPES[key]) 
end 
end 

# i can call -> get_1_type("xxx") , and get the function called 

回答

6

试试这个:

V4_RELATIONSHIP_TYPES.keys.each do |key| 
self.class.send(:define_method, "get_#{key}_type".downcase) do |param| 
    # use param 
    return GuidInfo.get_or_new(PARAMS, V4_RELATIONSHIP_TYPES[key]) 
end 
end 

现在你可以用一个参数调用方法

编辑1

关于Ruby块的某些链接:

Start with this one

Link 1

Link 2

+0

感谢,这是伟大的!你介意解释这是真的吗?特别是,我不明白块的工作方式 – 2010-08-27 01:23:27

+0

块用作方法体,而块参数用作方法参数。 – 2010-08-27 02:09:54

+0

非常感谢!我的头仍然围绕着块,产量等。你是如何精通它的? – 2010-08-27 03:06:43

1

我不知道你为什么会创建方式,而不是只是再次打开了类和插入你的方法,但你可以使用class_eval替代方法:

self.class.class_eval %Q{ 
    def get_#{key.downcase}_type(...) 
    ... 
    end 
} 
相关问题