1

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

class Apple
end

class Apple_Pie
  def name
    "apple pies"
  end
end

fruit_table = {:Apple => :Apple_Pie}

a = Apple.new

我想Apple_Piea. 我试过:

obj = Object.const_get(fruit_table[a.class])
obj.name

期待

apple pies

但这实际上并没有发生。我不确定如何将课程变成一个符号。有任何想法吗?

4

3 回答 3

5

您需要使用Module#name获取类的字符串名称,然后使用 将其转换为符号String#to_sym

从我的控制台:

> a.class
=> Apple
> a.class.name
=> "Apple"
> a.class.name.to_sym
=> :Apple
于 2013-02-23T21:36:37.407 回答
1

我刚刚粘贴了您的代码,并将.new添加到 `obj = obj = Object.const_get(fruit_table[a.class.name.to_sym]).new.name 它有效。不确定这是否真的是你想要的。

更新:忘记添加.name.to_sym

于 2013-02-23T21:40:35.657 回答
0
    ob_demoobject=Hash.new
    sym=ob_demoobject.class.to_s.to_sym
于 2014-04-01T04:07:09.960 回答