有一段时间,我一直在一个Ruby模块中包含一个完整的类.显然这不是我应该做的.似乎模块的目的是存储函数,然后将这些函数作为方法包含在一个新类中.

我不要这个.我有一个类,我想保存在一个单独的文件中,我可以从其他文件中访问它.我该怎么做?

谢谢

推荐答案

模块作为函数的持有者和名称空间具有双重用途.将类保留在模块中是完全可以接受的.要将一个类放在一个单独的文件中,只需像往常一样定义该类,然后在希望使用该类的文件中,只需在顶部放置require 'name_of_file_with_class'即可.例如,如果我在foo.rb中定义了类Foo,那么在bar.rb中,我将得到第require 'foo'行.

如果您使用的是Rails,这通常会自动发生

编辑:澄清文件布局

#file: foo.rb
class Foo
  def initialize
    puts "foo"
  end
end

...

#file: bar.rb
require 'foo'

Foo.new

If you are in Rails, put these classes in lib/ and use the naming convention for the files of lowercase underscored version of the class name, e.g. Foo -> foo.rb, FooBar -> foo_bar.rb, etc.

从ruby 1.9版开始,您可以使用require_relative来要求与您正在编辑的文件相对应的文件.

Ruby相关问答推荐

如何保证散列中的对象不完全相同

Rails 7 - 访问连接模型生成新查询

Ruby - 使用索引值识别和更新数组中的重复项

Ruby:这两种混入模块方法是否等效?

Symfony 2assets资源过滤器异常中的指南针

Ruby 中的内联注释

Kernel#gets try 读取文件而不是标准输入

如何在Ruby中从字符串中go 除前导和尾随引号

如何将参数传递给 array.map 快捷方式?

CSV.read 第 x 行的非法引用

如何使用 yardoc 列出未记录的模块/类/常量/方法?

格式化 Ruby 的漂亮打印

你能用 Ruby 开发原生 iPhone 应用程序吗?

如何在 RSpec 2 中自动加载 spec_helper.rb

发现 Ruby 对象成员?

确定Ruby的位置

区分一个Ruby字符串或数组

Ruby 疯狂:类与对象?

遍历数组的前 n 个元素

Ruby 中的动态方法调用