gpt4 book ai didi

ruby - 为什么 Integer.respond_to?( :even? ) 返回 false?

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

我一直在研究 Ruby Koans,我发现 about_open_classes.rb koan 很有趣。特别是他们修改 Integer#even? 方法的最后一个测试。我想尝试一下这个概念,所以我打开了 Irb 并尝试运行 Integer.respond_to?(:even?),但令我惊讶的是我得到了错误。然后我尝试了 Fixnum.respond_to?(:even?) 并得到了错误。我还尝试了 Integer.respond_to?(:respond_to?) 并得到了 true,当我执行 2.even? 时,我也得到了 true。我不知道发生了什么。谁能告诉我缺少什么?

最佳答案

Fixnum 的实例将 respond_to? :even?,但 Fixnum 类本身不会

>> 3.respond_to? :even?
=> true

>> 3.class
=> Fixnum

>> Fixnum.respond_to? :even?
=> false

>> Fixnum.class
=> Class

您可以通过定义自己的测试类来了解它是如何工作的:

class Test
def self.a
"a"
end
def b
"b"
end
end

>> Test.respond_to? :a
>> true
>> Test.respond_to? :b
>> false

>> t = Test.new
>> t.respond_to? :a
>> false
>> t.respond_to? :b
>> true

关于ruby - 为什么 Integer.respond_to?( :even? ) 返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18918288/

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