gpt4 book ai didi

ruby - 如何调用名称以给定字符串开头的类的所有实例方法?

转载 作者:太空宇宙 更新时间:2023-11-03 17:24:12 25 4
gpt4 key购买 nike

我有一个简单的验证类:

class MappingValidator

def validate(mapping)

end

protected

def validate_presence_of_title(mapping)
...
end

def validate_presence_of_key(mapping)
...
end

def validates_class_exists(mapping)
...
end

end

validate 方法中,我想调用任何以 validate_ 开头的方法,并将 mapping 作为参数传递。这也需要适用于 MappingValidator 的子类,因此如果子类声明以 validate_ 开头的方法,则在子类实例上调用 validate 时也会调用该方法。调用顺序无关紧要。

最佳答案

这是怎么回事?

class MappingValidator

def validate(mapping)
self.methods.grep(/^validate_/).each do |m|
send(m,mapping)
end
end

protected

def validate_presence_of_title(mapping)
p "1"
end

def validate_presence_of_key(mapping)
p "2"
end

def validates_class_exists(mapping)
p "3"
end

end

MappingValidator.new.validate("validate_")
# >> "1"
# >> "2"

关于ruby - 如何调用名称以给定字符串开头的类的所有实例方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18792700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com