【发布时间】:2014-01-22 13:07:20
【问题描述】:
我对@987654323@ 和require 'Module' 之间的区别感到困惑。在Learn Ruby the Hard Way,如何使用模块的示例设置了两个文件(mystuff.rb和apple.rb):
mystuff.rb
module MyStuff
def MyStuff.apple()
puts "I AM APPLES!"
end
end
apple.rb
require 'mystuff'
MyStuff.apple()
但是,当我在 Sublime Text 控制台或使用 ruby apple.rb 运行 apple.rb 时,我得到一个 Load Error。我也试过require 'MyStuff'和require 'mystuff.rb',但我仍然得到Load Error。
所以,我将apple.rb 的第一行切换为load 'mystuff.rb',这样它就可以运行了。但是,如果我将'mystuff.rb' 编辑为class MyStuff 的定义而不是module MyStuff,则没有区别。
作为参考,Load Error 是:
/Users/David/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in require': 无法加载此类文件 -- mystuff (LoadError)`
我查看了kernel_require.rb 并查看了require 的定义,但由于我是Ruby Nuby(实际上是一个编程新手),所以有点不知所措。由于 Learn Ruby the Hard Way 自 2012-10-05 以来一直没有更新,因此模块的语法可能发生了一些变化。是吗?
【问题讨论】:
-
你能把
require 'mystuff'换成require_relative 'mystuff'吗?参见例如stackoverflow.com/questions/3672586/…
标签: ruby module learn-ruby-the-hard-way