我有一个类(BaseClass)和一个继承自BaseClass的子类(SubClass)。我想要执行的操作之一是将请求从Base发送到Sub,但仅限于为其定义的方法。让我用一些代码来证明这一点:
BaseClass的:
def extract_data extracted_data=Hash.new
['attr1','attr2','attr3'].each do |attr|
extracted_data[attr] = self.send("extract_#{attr}")
end
return extracted_data
end
子类:
def extract_attr1
# do something and return a value
end
如果在子类中定义了具有该名称的方法,则这完全可以正常工作。如果未定义,我将收到错误。如何在调用方法之前检查方法是否在子类中定义?
答案 0 :(得分:7)
extracted_data[attr] = self.send("extract_#{attr}") if self.respond_to?("extract_#{attr}")