this out puts Class puts -6ren">
gpt4 book ai didi

ruby - 认为 ruby​​ 中缺少方法是否可疑?

转载 作者:太空宇宙 更新时间:2023-11-03 18:28:38 29 4
gpt4 key购买 nike

class Person
def name
puts "Doharey"
end
end

puts Person.class #=> this out puts Class
puts Class.methods.count #=> 82 methods
puts Person.methods.count #=> 82 methods

在上面的例子中,创建了一个 Person 类,它继承自 Class 并且 PersonClass 都有相同数量的方法。

现在让我们实例化 Person

a = Person.new
puts a.methods.count #=> 42 methods

如果 aPerson 的实例,那么为什么 a 中的方法数量少于 Person .会发生什么 ?一些方法是如何丢失的?他们不是首先继承的吗?如果是怎么办?

最佳答案

 a.methods

是实例方法和

 Person.methods

是类方法。它们不共享相同的 namespace 。当您在 Person 上定义 name 时,您正在定义一个实例方法。

class Person
def self.name
puts "Doharey"
end
end
=> nil
Person.methods.count
=> 113
Class.methods.count
=> 114

这里我定义了一个类方法,它也出现在方法列表中。

关于ruby - 认为 ruby​​ 中缺少方法是否可疑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7254294/

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