gpt4 book ai didi

ruby - class << self 中的类定义是做什么的?

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

我知道如何添加类方法和类行为 using self << class (eigenclass) .但是,在阅读 some source code 时,我看到了另一种用法:

class LetterAvatar
class << self
class Identity
end
end
end

这是如何运作的?它有什么作用,什么时候应该使用它?什么是(可能更被认可的)替代方式来写这个?

最佳答案

我认为他们这样做是因为他们在其他任何地方都不需要这个类(class)。

如果不打开单例类,流程将如下所示(假设原始代码中元类中定义的每个方法都将以 self. 为前缀):

他们可以将Identity定义为

class LetterAvatar
class Identity
end
end

然后在self.generate方法中使用类如下:

class LetterAvatar
# code omitted
def self.generate
identity = LetterAvatar::Identity.from_username(username)
# code omitted
end
# other class level methods defined with `self.`
end

但是,如果 Identity 类实际上仅在单例类(在 generate 中)中使用(并且不需要在其他任何地方访问),为什么要这样做呢?

IMO 的解决方案非常优雅,以前从未见过这样的东西。

关于ruby - class << self 中的类定义是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33994709/

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