有一段时间我在Ruby模块中包含了一个完整的类。显然这不是我应该做的。似乎模块的要点是存储函数,然后可以将这些函数作为方法包含在新类中。
我不想要这个。我有一个类,我想保存在一个单独的文件中,我可以从其他文件访问。我怎么能这样做?
感谢。
答案 0 :(得分:59)
模块作为函数的持有者和命名空间提供双重用途。将模块保存在模块中是完全可以接受的。要将类放在单独的文件中,只需像往常一样定义类,然后在要使用该类的文件中,只需将require 'name_of_file_with_class'
放在顶部即可。例如,如果我在Foo
中定义了类foo.rb
,则在bar.rb
中我会有require 'foo'
行。
如果您使用的是Rails,那么这种情况经常会自动发生
编辑:澄清文件布局
#file: foo.rb
class Foo
def initialize
puts "foo"
end
end
...
#file: bar.rb
require 'foo'
Foo.new
如果您在Rails中,请将这些类放在lib/
中,并使用命名约定来获取类名的小写下划线版本的文件,例如: Foo
- > foo.rb
,FooBar
- > foo_bar.rb
等等。
从ruby版本1.9开始,您可以使用require_relative
来相对于您正在编辑的文件要求文件。
答案 1 :(得分:0)
您也可以使用加载。如果文件位于同一目录中,也可以使用require relative。请阅读此链接以进一步了解:http://rubylearning.com/satishtalim/including_other_files_in_ruby.html
答案 2 :(得分:0)
使用Require时,字符串中的内容表示您要引用的类的完整路径名,除非它在Ruby的根文件夹中