我想获得一个对象的类并将其转换为符号。特别是,鉴于此:
class Apple
end
class Apple_Pie
def name
"apple pies"
end
end
fruit_table = {:Apple => :Apple_Pie}
a = Apple.new
我想从Apple_Pie
开始获取类a
的实例。我试过了:
obj = Object.const_get(fruit_table[a.class])
obj.name
期望
apple pies
但这实际上并没有发生。我不知道如何将班级变成符号。有什么想法吗?
答案 0 :(得分:4)
您需要使用Module#name
获取该类的字符串名称,然后使用String#to_sym
将其强制转换为符号。
从我的控制台:
> a.class
=> Apple
> a.class.name
=> "Apple"
> a.class.name.to_sym
=> :Apple
答案 1 :(得分:1)
我只是粘贴了你的代码,并将 .new 添加到`obj = obj = Object.const_get(fruit_table [a.class.name.to_sym])。new.name 有效。 不确定这是否真的是你想要的。
更新:忘记添加 .name.to_sym
答案 2 :(得分:0)
ob_demoobject=Hash.new
sym=ob_demoobject.class.to_s.to_sym