2

我知道这是一个扭曲的标题......我是一个 ruby​​ 编程新手,这是我的问题:

有两个文件包含不同的功能,其中一个正在调用另一个

文件 a.rb:
def f1(v1)......

文件 b.rb:
load "a.rb"
def f2(v2)......

以上两个文件都在父目录中。b.rb现在,如果我使用loador调用当前目录require,我将遇到相同的错误:

LoadError: cannot load such file -- a.rb
from /Users/username/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in require' from /Users/username/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:inrequire' from /Users/username/b.rb:1:in `'

对于这种情况,我想出了两个解决方案:
1)放入f2文件a.rb
2)或删除load "a.rb"文件中的行b.rb,以及load我的实现中的两个文件。

但我认为任何一种方式都会破坏这两个文件之间的逻辑关系/区别。这两个文件面临不同类型的问题,而f2没有f1.

我的问题是:有没有办法将两个文件中的两个函数分开,同时只加载一次(不知道函数之间的任何依赖关系)?

4

1 回答 1

2

在文件 b.rb 中:

require_relative "./a.rb"
def f2(v2)......

请参阅http://extensions.rubyforge.org/rdoc/classes/Kernel.html

于 2013-06-20T04:38:51.343 回答