假设我有一个班级:
class MyClass
# In my class I have these 2 filters
self.properties_for_create = [:p1, :p2, :p3]
self.properties_for_update = [:p2, :p3, :p4]
# Then I have these 2 methods
def create(list_of_properties)
raise TypeError, "Must be Array!" unless list_of_properties.is_a?(Array)
# do something ...
end
def update(list_of_properties)
raise TypeError, "Must be Array!" unless list_of_properties.is_a?(Array)
# do something ...
end
end
然后我想要一个方法my_filter_method
,以便:
def create(list_of_properties)
...
filter = my_filter_method # will return properties_for_create
...
end
def update(list_of_properties)
...
filter = my_filter_method # will return properties_for_update
...
end
通过采用任何命名方案和参数,我应该如何实现这个my_filter_method
,使其看起来干燥可读?
答案 0 :(得分:0)
没有简单的方法可以做到,但你可以这样做:
caller.first.scan(/`(\w+)'/).first.first
这将返回调用方法的名称,因此您可以将其放在my_filter_method
中,它会为您提供'create'
或'update'
。
我应该指出,我不建议这样做。对于像这样的简单情况,最好避免使用这种复杂的元编程。