require 可以执行本地定义的函数吗?我想描述我需要的最简单的方法就是展示一个例子。
我使用的是 ruby 1.9.3,但也欢迎 1.8 和 2.0 的解决方案。
我有一个文件 main.rb 如下:
class Stuff
def self.do_stuff(x)
puts x
end
require_relative('./custom.rb')
do_stuff("y")
end
并且在同一文件夹中还有一个文件custom.rb,其内容如下:
do_stuff("x")
运行 main.rb,我有以下输出:
/home/fotanus/custom.rb:1:in `<top (required)>': undefined method `do_stuff' for main:Object (NoMethodError)
from main.rb:5:in `require_relative'
from main.rb:5:in `<class:Stuff>'
from main.rb:1:in `<main>'
请注意,如果没有require
,输出是y
.
我不确定这是否是最好的解决方案,但使用eval
应该可以解决问题。
class Stuff
def self.do_stuff(x)
puts x
end
eval(File.read('./custom.rb'))
do_stuff("y")
end
输出将是:
pigueiras@pigueiras$ ruby stuff.rb
x
y
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)