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文件?

Ruby - 枚举文件

好问题。只需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))。