gpt4 book ai didi

ruby - 在类定义上调用 object_id 有什么作用?

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

我正在玩一些 ruby​​ 代码并做类似的事情:

1.9.3-p392 :012 > class Mx; self; end.object_id
=> 70263149976460
1.9.3-p392 :013 > class Mx; end.object_id
=> 4

我认为第一个示例在代码执行时返回了对该类的真实引用,但第二个示例中发生了什么?什么是 4?有趣的是它返回 NilClass 如果

1.9.3-p392 :017 > class Mx; end.class
=> NilClass

最佳答案

类定义是一个表达式。所有表达式的计算结果都是一个值。对于:

类 Foo; end 该值为 nil

在类定义(和其他 block )中 ruby返回 block 中最后一个表达式的值。如果 block 为空,则返回值为 nil。

类 Foo; “废话”;结束 # => "BLAH"

这里的self是对class Foo引入的类的引用。

类 Foo;自己;结束 # => Foo

nil 是一个单例“对象”,它有一个 .class => NilClass

而“4”是nil.object_id。在您的解释器中,您可以执行 nil.object_id。顺便说一句,对象 ID 是特定于实现的,您不能依赖 nil.object_id == 4

关于ruby - 在类定义上调用 object_id 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16197096/

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