在Ruby中,是否有一种方法可以通过包访问类,或者所有类都要写在同一个代码文件中?

时间:2013-05-07 22:29:36

标签: ruby netbeans netbeans-6.9

我正在使用Netbeans在Ruby中编程,我似乎无法访问我在Ruby的主类中编写的其他类,直到我将该代码放在主类本身中。有没有办法解决这个问题,以便它像Java类一样工作?

2 个答案:

答案 0 :(得分:1)

如果我理解正确,那么您正在寻找import您在单独文件中写入当前文件的课程。如果您希望这样做,请查看require_relative

# cow.rb
class Cow
  def moo
    'Moooooooo'
  end
end

# main.rb
require_relative 'cow.rb'

milford = Cow.new
puts milford.moo #=> 'Moooooooo'

需要注意的是require_relative在您调用它的文件的当前位置搜索文件。例如:

# If cow.rb is in folder 'animals'
require_relative 'animals/cow.rb' #=> Fine
require_relative 'cow.rb' #=> LoadError

我建议找一些关于Ruby的好教程或找一本初学者书。其中一些甚至可以在线访问Programming Ruby The Pragmatic Programmer's Guide。这个问题涵盖了一些非常基本的Ruby概念。

另外,我不建议使用Netbeans,因为他们削减了对Ruby的支持。如果您想继续使用旧版本的Netbeans,这很好,但很快就会发现它缺乏对较新Ruby版本的支持。

答案 1 :(得分:0)

首先,Ruby没有“包”的概念。有文件和模块。要从同一目录中的文件导入所有全局变量,常量,模块和类,请键入:

require_relative "myfile.rb"

您现在可以在代码中使用myfile.rb中定义的任何类,模块,常量和全局变量。