gpt4 book ai didi

ruby - 单例类的出现

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

nilfalsetrue 的单例类与自定义类的实例之间似乎存在对比。

i) nilfalsetrue 的单例类由它们指定的常量名称引用:

nil.singleton_class #=> NilClass
false.singleton_class #=> FalseClass
true.singleton_class #=> TrueClass

ii) nilfalsetrue 的单例类出现在祖先列表中:

nil.class.ancestors #=> [NilClass, Object, Kernel, BasicObject]
false.class.ancestors #=> [FalseClass, Object, Kernel, BasicObject]
true.class.ancestors #=> [TrueClass, Object, Kernel, BasicObject]

对于自定义类A的实例a的名为AClass的单例类,

class A; end
a = A.new
AClass = a.singleton_class

i) AClass 没有被指定的常量名引用:

a.singleton_class #=> #<Class:#<A:0x00007fda832a7eb0>>

ii) AClass 没有出现在祖先列表中:

a.class.ancestors #=> [A, Object, Kernel, BasicObject]

这是预期的行为吗?是什么将一方面的 nilfalsetrue 和另一方面的 a 分开?该规范遵循什么?

最佳答案

不确定这是否有帮助,但来自 docs for singleton_class :

If obj is nil, true, or false, it returns NilClass, TrueClass, or FalseClass, respectively.

因此 singleton_classniltruefalse 有特殊的行为,而不是返回的标准行为对象的单例类。

关于ruby - 单例类的出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54923527/

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