gpt4 book ai didi

ruby - 为什么我们使用 "class << self"表达式?

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

在 Ruby 中,有几种方法可以声明类方法。

我们有这两种形式...

class Dog

def self.species
puts "I'm a dog."
end

def Dog.species_rly?
puts "Still a dog."
end

end

还有另一个更长的形式...

class Dog
class << self
def species_srsly?
puts "OK, fine. I'm a cat."
end
end
end

为什么使用最后一种形式?这比仅仅这样做有什么好处?

class Dog
def Dog.some_method
# ...
end
end

最佳答案

This wonderful book说这三种语法是相同的。选择哪一个是个人喜好的问题。它还说类名语法 (def Dog.some_method) 不被 Ruby 社区所接受。我明白为什么:你在无缘无故地复制信息。如果重命名类,则还必须更新所有方法定义。

因此,您可以在剩下的两种语法之间自由选择:)

关于ruby - 为什么我们使用 "class << self"表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10166150/

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