ruby – 对“respond_to?”方法感到困惑
发布时间:2020-12-16 21:22:14 所属栏目:百科 来源:网络整理
导读:编辑:我使用的是 Ruby 2.0.0版 我在文件example.rb中有以下代码 def say_hello puts 'hi'endputs respond_to?(:say_hello)say_hello 运行此代码时,输??出为: falsehi 我很困惑为什么为“respond_to”返回false?当我可以使用那种方法. “respond_to?”方
编辑:我使用的是
Ruby 2.0.0版
我在文件example.rb中有以下代码 def say_hello puts 'hi' end puts respond_to?(:say_hello) say_hello 运行此代码时,输??出为: false hi 我很困惑为什么为“respond_to”返回false?当我可以使用那种方法. “respond_to?”方法似乎以这种方式工作: 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? 解决方法
顶级方法定义为private,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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |