在常量名称中使用变量

Using a variable in constant name

我有三个常量:

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

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

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

这可能不是个好主意,但您也可以使用 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