gpt4 book ai didi

ruby - 对 "respond_to?"方法感到困惑

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

编辑:我使用的是 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? 默认忽略私有(private)方法(你需要传递第二个参数让它识别say_hello):

def say_hello
puts 'hi'
end

puts respond_to?(:say_hello) #=> false
puts respond_to?(:say_hello, :include_private) #=> true
say_hello

关于ruby - 对 "respond_to?"方法感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17893977/

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