使用常量名称的变量

时间:2015-01-04 19:52:49

标签: ruby

我有三个常数:

MUTUAL_CATEGORIES
PROVIDER_CATEGORIES
RECEIVER_CATEGORIES

以及引用类别的方法

def do_some_stuff_with_mutual
  MUTUAL_CATEGORIES ...
end

我想抽象这个方法,所以我可以做类似的事情:

do_some_stuff_with(MUTUAL)

def do_some_stuff_with(type)
  (type + "_CATEGORIES") ...
end

如何将字符串转换为引用常量?

2 个答案:

答案 0 :(得分:2)

Object.const_get(type + "_CATEGORIES")...Object替换为定义常量的类

答案 1 :(得分:1)

这可能不是一个好主意,但你也可以使用eval:

do_some_stuff_with(MUTUAL)

def do_some_stuff_with(type)
   eval(type + "_CATEGORIES").each_with_index do |item, index|
      #stuff for this type
   end
end