代码之家  ›  专栏  ›  技术社区  ›  Luke Chadwick

在Ruby中,有没有更好的方法可以基于相同名称的传入字符串来选择常量(或者完全避免使用常量)?

  •  1
  • Luke Chadwick  · 技术社区  · 14 年前

    不确定标题是否完全描述了我要问的问题,抱歉。

    我的一个开发人员同事创建了这样的类:

    class Widget
      attr_accessor :model_type
      ...
    end
    

    还有:

    class ModelType
      MODEL1 = "model1"
      MODEL2 = "model2"
      MODEL3 = "model3"
    end
    

    现在他要我转换检索到的字符串 "MODEL1" 到常数。因此,当他在其他地方引用该模型时,他可以使用 ModelType::MODEL1 (编辑:传入字符串将完全是常量的名称) . 很明显,我必须从字符串转换为如下所示:

    case model_type
      when 'MODEL1'
        @model_type = ModelType::MODEL1
      ...
    end
    

    我觉得这是笨重的,所以我想知道是否有更好的干衣机方法来提供这种功能。

    1 回复  |  直到 14 年前
        1
  •  4
  •   wesgarrison    14 年前
    >> ModelType.const_get("MODEL1")
    
    => "model1"
    

    Module const_get() rdoc