gpt4 book ai didi

ruby - 类和对象之间的混淆行为

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

由于我们知道类也是类Class的一个对象。我在这里有一个疑问。我在这里定义了一个类 Foo 和一个打印对象的方法。

class Foo
def bar
puts self
end
puts self
end

当我执行 Foo.new.bar 时,o/p 将是 # <Foo:0x935c740>它代表 Foo 类的对象。为什么方法外的 self 不打印 #<Class: 0x..>作为类类的对象?抱歉,如果我的问题有误,但请澄清。

最佳答案

这里有一些不同的方式来定义类/对象:

klass = Class.new {
puts self
def bar
puts self
end
}
# #<Class:0x3fbdbb8>

如您所见,它输出 #<Class:0x3fbdbb8> .所以它的类是Class .你可以通过class查看方法:

klass.class
# => Class

当你第一次用大写字母命名你的类(例如 Example )时,它使用它作为输出而不是像这样的神秘名称:#<Class:0x3fbdbb8> .

Foo = Class.new {
puts self
def bar
puts self
end
}

仍然输出神秘的名字因为Foo =的部分尚未进行评估。

puts Foo

输出正确的名字 - Foo

如果我重新命名呢?

Qux = Foo
# => Foo

没有。 Foo将是 Foo永远。

关于ruby - 类和对象之间的混淆行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25175314/

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