在 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
I am trying to define a set of functions where I can pass in given params.
for example, how do i do the following?
>> 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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
试试这个:
现在您可以使用参数调用该方法:
编辑 1
有关 Ruby 块的一些链接:
从这个开始
链接 1
链接 2
Try this:
Now you can invoke the method with a parameter:
Edit 1
Some links about Ruby blocks:
Start with this one
Link 1
Link 2
我不确定为什么您要以这种方式创建一个方法,而不是再次打开类并插入您的方法,但您可以使用
class_eval
代替:I'm not sure why you would create a method that way instead of just opening up the class again and inserting your method, but you could use
class_eval
instead: