gpt4 book ai didi

ruby - 从类方法中获取类名

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

我试图从类中的静态方法中获取类的名称:

class A
def self.get_class_name
self.class.name.underscore.capitalize.constantize
end
end

尽管这会返回 Class 而不是 A。关于如何获得 A 有什么想法吗?

最终我还想要一个继承自 A 的类 B,它将使用相同的方法并在调用时返回 B。

我这样做的原因是因为我最终在这个域下有另一个对象:A::SomeOtherClass 我想使用我收到的结果。

最佳答案

删除 .class :

class A
def self.get_class_name
self.name.underscore.capitalize.constantize
end
end

self在类的上下文中(而不是实例方法的上下文中)指的是类本身。

这就是你写 def self.get_class_name 的原因定义一个类方法。这意味着添加方法 get_class_nameself (又名 A )。相当于def A.get_class_method .

这也是为什么当你尝试 self.class.name 时你有Class - Object#classAClass .

为了使这一点更清楚,请考虑以下输出:

class A
puts "Outside: #{self}"

def self.some_class_method
puts "Inside class method: #{self}"
end

def some_instance_method
puts "Inside instance method: #{self}"
end
end

A.some_class_method
A.new.some_instance_method

这是:

Outside: A
Inside class method: A
Inside instance method: #<A:0x218c8b0>

关于ruby - 从类方法中获取类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31246830/

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