1

我正在尝试定义一组可以传入给定参数的函数。

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

>> 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
4

2 回答 2

7

尝试这个:

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

现在您可以使用参数调用该方法:

get_1_type("xxx")

编辑 1

关于 Ruby 块的一些链接:

从这个开始

链接 1

链接 2

于 2010-08-26T23:20:44.903 回答
1

我不知道为什么你会以这种方式创建一个方法,而不是再次打开类并插入你的方法,但你可以class_eval改用:

self.class.class_eval %Q{
  def get_#{key.downcase}_type(...)
    ...
  end
}
于 2010-08-26T22:22:24.743 回答