Ruby类到符号

时间:2013-02-23 21:27:47

标签: ruby

我想获得一个对象的类并将其转换为符号。特别是,鉴于此:

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

但这实际上并没有发生。我不知道如何将班级变成符号。有什么想法吗?

3 个答案:

答案 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