gpt4 book ai didi

ruby - `respond_to?` 与 `respond_to_missing?`

转载 作者:数据小太阳 更新时间:2023-10-29 06:23:08 27 4
gpt4 key购买 nike

与定义 respond_to? 相比,定义 respond_to_missing? 有什么意义?如果为某些类重新定义 respond_to? 会出什么问题?

最佳答案

没有respond_to_missing?已定义,试图通过 method 获取方法会失败:

class Foo
def method_missing name, *args
p args
end

def respond_to? name, include_private = false
true
end
end

f = Foo.new
f.bar #=> []
f.respond_to? :bar #=> true
f.method :bar # NameError: undefined method `bar' for class `Foo'

class Foo
def respond_to? *args; super; end # “Reverting” previous redefinition

def respond_to_missing? *args
true
end
end

f.method :bar #=> #<Method: Foo#bar>

Marc-André (Ruby 核心提交者)有一个很好的 blog post on respond_to_missing? .

关于ruby - `respond_to?` 与 `respond_to_missing?`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13793060/

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