在单独的文件中定义时,将Ruby类添加到模块

时间:2018-03-09 15:36:43

标签: ruby class module scope

我想通过将它们放在一个模块中来命名我的Ruby类。实际上,如果我决定发布我的Ruby gem以便类名不与另一个gem中的现有类冲突,这是一个好主意。我知道我可以为课程A::B执行以下操作:

module A
  class B

  end
end

但是,上面的内容非常繁琐,因为我需要将所有类定义放在一个Ruby源文件中,以便将它们放在模块下。我宁愿将我的类定义保存在单独的源文件中,就像Java项目一样,那么当它们在单独的文件中定义时,如何将类添加到模块中呢?

1 个答案:

答案 0 :(得分:8)

在这种情况下,公认的做法是将每个文件包装在module

# a/b.rb
module A
  class B

  end
end

# a/c.rb
module A
  class C

  end
end

顺便说一下。由于常量的解析方式,建议使用上面引用的长格式而不是class A::B

http://blog.honeybadger.io/avoid-these-traps-when-nesting-ruby-modules/)。