Ruby 从文件中返回最后计算的对象
是否可以从Ruby文件返回上一次计算的对象 假设我有这样一个文件:Ruby 从文件中返回最后计算的对象,ruby,Ruby,是否可以从Ruby文件返回上一次计算的对象 假设我有这样一个文件: # app.rb def foo "Hello, world!" end foo 然后,我会期待类似这样的行为: # other_file.rb require_relative!('foo') # => "Hello, world!" 我们获取所需文件的最后一个计算对象,而不是require\u relative的true返回值 有没有办法让require\u相对-类似行为?这听起来像是一种不好的做法。Ruby文
# app.rb
def foo
"Hello, world!"
end
foo
然后,我会期待类似这样的行为:
# other_file.rb
require_relative!('foo') # => "Hello, world!"
我们获取所需文件的最后一个计算对象,而不是require\u relative
的true
返回值
有没有办法让
require\u相对代码>-类似行为?这听起来像是一种不好的做法。Ruby文件存储的是Ruby代码,而不是数据
按照习惯,您应该使用类或模块创建一个Ruby文件,需要它并从中调用一些函数
# foo.rb
module Foo
extend self
def foo
"bar"
end
end
# irb
require 'foo'
Foo.foo
#=> bar
否则,正如@sawa所提到的,您应该将文件作为字符串读取并对其求值。这在习惯上是错误的。不,你不能用正常的方式来做。蛮力方法是将整个文件作为字符串读取,然后eval
。否则,你需要自己编写一个C库。。。我懂了。为了防止出现某些异常,在对其求值之前,是否可以检查此类字符串的语法?类似于check(s)#=>true
:o=File.open'/app.rb';s=o.read;如果检查,则进行评估。
这应该是一个不同的问题(但它将是一个已经存在的问题的副本)。如果你真的对此感兴趣,你应该问。是的,这不是一件平常的事。但是@sawa展示的方式非常符合我的需要。我只想在求值之前,根据字符串而不是文件(我的意思是没有ruby-c app.rb
)对语法进行检查。