ruby-on-rails - 如何将其移动到基类,它是一个 Ruby 枚举

标签 ruby-on-rails ruby

我读了这篇解释如何在 Ruby 中进行枚举的文章,还展示了如何使它们可枚举,例如:

class Blah

 def Blah.add_item(key, value)
   @hash ||= {}
   @hash[key] = value
 end

 def Blah.const_missing(key)
   @hash[key]
 end

 def Blah.each
   @hash.each {|key, value| yield(key, value)}
 end

end
  1. 我有其他需要的枚举,我能否以此为基础创建一个基类,这样我就不必为每个枚举重复方法 add_item、const_missng 和 .each?

  2. 在为我的所有枚举创建文件时,我把它放在/lib/enums.rb 中,这是一个好习惯吗?

  3. 我应该将此类放在模块中吗?也就是说,我相信您这样做是为了命名空间吗?

最佳答案

  1. 您可以只使用 Blah 作为您的基类。

    C 类 < Blah;结束

    D级<废话;结束

  2. 我想我可以将它与它所使用的每个项目的源代码一起放入。是的,DIE、DRY 等等,但这在逐行代码中最为重要。将外部软件与每个项目合并是一种相当普遍的做法。

  3. 没有。它已经是一个类,所以它只使用一个名称。将模块放在使用 Blah、项目或项目部分的代码周围。这将很大,更需要命名空间。

关于ruby-on-rails - 如何将其移动到基类,它是一个 Ruby 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4074356/

相关文章:

ruby - 为什么从代码块中的双拼参数调用 `to_ary`?

arrays - Array Ruby 中实例变量的总和

ruby-on-rails - link_to 与 Rails 中的 block

javascript - 如何处理 ember.js 模型中的标签

ruby-on-rails - 在模型中,什么时候使用attr_accessor,什么时候使用attr_accessible?

ruby-on-rails - 为什么 mod_passenger.so 会出现此权限错误?

ruby-on-rails - POST 请求的参数中没有数据

ruby-on-rails - 什么是类似 Twitter 名称的正则表达式?

ruby - Rspec 不工作,或提高不提高?

ruby-on-rails - sidekiq-superworker 的 superjob 完成时调用函数