编辑:我使用的是Ruby 2.0.0版
我在文件example.rb中有以下代码
def say_hello
puts 'hi'
end
puts respond_to?(:say_hello)
say_hello
Run Code Online (Sandbox Code Playgroud)
运行此代码时,输出为:
false
hi
Run Code Online (Sandbox Code Playgroud)
我很困惑为什么为"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
Run Code Online (Sandbox Code Playgroud)
输出是:
true
bye
Run Code Online (Sandbox Code Playgroud)
有没有人知道为什么"respond_to?" 在第一种情况下返回false?
Vic*_*gin 15
顶级方法被定义为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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4473 次 |
| 最近记录: |