编辑:我正在使用 Ruby 版本 2.0.0
我在文件 example.rb 中有以下代码
def say_hello
puts 'hi'
end
puts respond_to?(:say_hello)
say_hello
运行此代码时,输出为:
false
hi
我很困惑为什么“respond_to”返回 false?当我可以使用该方法时。
“响应?”方法似乎是这样工作的:
class Person
def say_bye
puts 'bye'
end
end
mike = Person.new
puts mike.respond_to?(:say_bye)
mike.say_bye
输出是:
true
bye
有谁知道为什么“respond_to”?在第一种情况下返回 false?
顶级方法被定义为私有的,并且Object#respond_to?
默认情况下忽略私有方法(您需要传递第二个参数才能识别say_hello
):
def say_hello
puts 'hi'
end
puts respond_to?(:say_hello) #=> false
puts respond_to?(:say_hello, :include_private) #=> true
say_hello
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)