gpt4 book ai didi

ruby - 所有的类方法都是用 "def self.foo"定义的吗?

转载 作者:数据小太阳 更新时间:2023-10-29 08:33:54 27 4
gpt4 key购买 nike

我的以下想法是否正确?非常感谢建议/反馈!


我们可以通过在方法名前是否指定关键字self来判断哪个方法是实例方法,哪个方法是类方法。

因此,方法,例如:def self.foo_bar 被定义为类方法。另一方面,def foo_bar 被定义为实例方法。

最佳答案

不,你不能那样做。考虑一下:

class C
class << self
def m
puts 'pancakes!'
end
end
def i
puts 'eggs'
end
end

这为您提供了 C 上的类方法 m,方法声明中没有“self”。但是,您可以向类询问它的方法:

C.methods.include? :m
# true
C.methods.include? :i
# false
C.instance_methods.include? :i
# true

考虑到 Ruby 类的可变性,询问类是确定的唯一方法。

关于ruby - 所有的类方法都是用 "def self.foo"定义的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8046333/

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