gpt4 book ai didi

ruby-on-rails - 为什么 'class' 显示 'Class' 而 'ancestors.include? Class' 是 'false' ?

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

我有一个继承自 ApplicationRecord 的类 User。当我检查 User.ancestors.include?(Class) 时,结果是 false 但对于 User.class,结果是

在这种情况下,class 方法提供的信息有什么用例?它真正告诉我什么是实用的?好像跟继承关系不大。

最佳答案

What's the use case for the information supplied by the class method in such cases? What does it really tell me to be of practical use? It doesn't seem to have anything to do with inheritance.

class 对每个对象都以相同的方式工作。在类上调用 class 提供与在实例上调用 class 相同的信息。那是因为在 Ruby 中,类也是实例。

'foo'.class 返回 String 因为 'foo'String 的实例。同样,User.class 返回 Class,因为 UserClass 的一个实例。

特别是,User 不是 ApplicationRecord 的实例。

通过 class 创建时 UserClass 的一个实例可能并不明显关键词:

class User < ApplicationRecord; end

但是当您通过 Class.new 显式创建它时,它会变得非常明显: (两个例子产生相同的结果)

User = Class.new(ApplicationRecord)
User.class #=> Class

因为上面就像:(使用String.new 来演示)

foo = String.new('foo')
foo.class #=> String

关于ruby-on-rails - 为什么 'class' 显示 'Class' 而 'ancestors.include? Class' 是 'false' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50224369/

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