在Ruby中,有没有更好的方法根据同名的传入字符串选择常量(或完全避免常量)?
不确定标题是否完全描述了我想问的问题,抱歉 我的一位开发伙伴创建了这样的类:在Ruby中,有没有更好的方法根据同名的传入字符串选择常量(或完全避免常量)?,ruby,architecture,Ruby,Architecture,不确定标题是否完全描述了我想问的问题,抱歉 我的一位开发伙伴创建了这样的类: class Widget attr_accessor :model_type ... end 以及: 现在,他希望我将检索到的字符串“MODEL1”转换为常量。因此,当他在其他地方引用该模型时,他可以使用ModelType::MODEL1(编辑:传入字符串将恰好是常量的名称)。显然,我必须从字符串中转换,我得到的字符串如下所示: case model_type when 'MODEL1' @mod
class Widget
attr_accessor :model_type
...
end
以及:
现在,他希望我将检索到的字符串“MODEL1”
转换为常量。因此,当他在其他地方引用该模型时,他可以使用ModelType::MODEL1
(编辑:传入字符串将恰好是常量的名称)。显然,我必须从字符串中转换,我得到的字符串如下所示:
case model_type
when 'MODEL1'
@model_type = ModelType::MODEL1
...
end
我觉得这很笨重,所以我想知道是否有更好的方式来提供这种功能
>> ModelType.const_get("MODEL1")
=> "model1"
提及您实际使用的模型名称字符串类型而不是
MODEL1
,可能会很有用,因为您可以在符号之间转换、大写、复数等方面做一些巧妙的事情。感谢Anurag,它将更新,基本上ModelType::MODEL1将与“MODEL1”完全匹配提到您实际使用的模型名称字符串而不是MODEL1
,可能会很有用,因为您可以在符号、大写、复数等之间进行转换。感谢Anurag,它将更新,基本上ModelType::MODEL1将与“MODEL1”完全匹配
>> ModelType.const_get("MODEL1")
=> "model1"