非常简单的Ruby问题:Where';我的课是什么?

非常简单的Ruby问题:Where';我的课是什么?,ruby,Ruby,[我刚开始学习Ruby,但“没有任何问题是太新的”,所以我继续努力…] 我看到的每一篇教程和书都从Ruby with the interactive shell到Ruby on Rails。我还没有做Rails,但我不想使用交互式shell。我有一个类文件(first_class.rb)和一个Main(Main.rb)。如果我运行main.rb,我当然会得到未初始化的常量FirstClass我如何告诉ruby关于第一类.rb?最简单的方法是将它们放在同一个文件中 但是,您也可以使用require

[我刚开始学习Ruby,但“没有任何问题是太新的”,所以我继续努力…]


我看到的每一篇教程和书都从Ruby with the interactive shell到Ruby on Rails。我还没有做Rails,但我不想使用交互式shell。我有一个类文件(first_class.rb)和一个Main(Main.rb)。如果我运行main.rb,我当然会得到未初始化的常量FirstClass我如何告诉ruby关于
第一类.rb

最简单的方法是将它们放在同一个文件中

但是,您也可以使用require,例如:

require 'first_class'

您还可以按如下方式使用自动加载:

autoload :FirstClass, 'first_class'

一旦使用FirstClass,此代码将自动加载first_class.rb。但是,请注意,当前的autoload实现不是线程安全的(请参阅)。

还有一点值得注意:在ruby中通常不会使用
main
文件。如果您正在编写命令行工具,标准做法是将该工具放在
bin
子目录中。对于普通的一次性脚本,主要习惯用法是:

if __FILE__ == $0
  # main does here
  # `__FILE__` contains the name of the file the statement is contained in
  # `$0` contains the name of the script called by the interpreter
  # 
  # if the file was `required`, i.e. is being used as a library
  # the code isn't executed.
  # if the file is being passed as an argument to the interpreter, it is.
end

你好,ar2800276,谢谢你!在Java中,我们有一个可以放在任何类上的静态main方法。在Ruby中使用“标准实践”方法有什么好处吗?>在Ruby中使用“标准实践”方法有什么好处吗?优点是Ruby中不存在静态类方法:)非常酷。我不知道我是否会在没有Rails的情况下使用Ruby,但是我想知道一些东西以防万一。再次感谢!实际上,这个习惯用法的优点是,如果只需要文件,就不会运行
main
代码。