Ruby - 枚举文件
本文关键字:文件 枚举 Ruby | 更新日期: 2023-09-27 18:33:08
在 C# 中,我用于创建一个名为"枚举.cs"的文件,并在其中定义我的应用程序将需要的所有枚举...我认为这样做更容易。现在,我学习了 Ruby,我阅读并选择了定义枚举的module
方法,因为我可以将 int 与"单词"相关联,例如:
module ContractType
Undefined = 0
Internship = 1
CLT = 2
Contractor = 4
end
现在如何让我的"用户"模型公开类似newGuy.CurrentContractType = ContractType.Internship
?!?
我是否import
模块? extend
?还是我应该引用所有枚举所在的GlobalEnums.rb
文件?
好问题。只需require
文件顶部的 GlobalEnums.rb
模块,然后像这样引用模块和常量:
newGuy.currentContractType = ContractType::Internship
您会注意到,在 Ruby 中,::
用于引用命名空间(类或模块)中的常量,而不是 .
。如果您有多个嵌套级别,则只需链接::
:
module Foo
module Bar
class Baz
Qux = "quux"
end
end
end
p Foo::Bar::Baz::Qux
# => "quux"
附言我建议浏览一下像这样的Ruby风格指南,特别是命名部分。除了极少数例外†Ruby 中的方法和变量名称snake_case
。模块和类名CamelCase
,其他常量通常SCREAMING_CAMEL_CASE
。
考虑到这一点,经验丰富的 Rubyist 可能会像这样编写您的代码:
module MyApp
module ContractType
UNDEFINED = 0
INTERNSHIP = 1
CLT = 2
CONTRACTOR = 4
end
end
# Assuming this is somewhere inside the MyApp namespace...
new_guy.current_contract_type = ContractType::INTERNSHIP
†例如,严格的转换方法(如Integer(n)
)和快捷方式构造函数(如URI(str)
或Nokogiri::XML(str)
)。