从文件中返回最后一个评估对象

时间:2015-11-17 11:31:16

标签: ruby

是否可以从Ruby文件返回最后一个评估对象?

假设我有一个类似的文件:

<?php
header( 'Content-type: text/html; charset=utf-8' );
for( $i = 0 ; $i < 10 ; $i++ ){
    echo $i . '<br>';
    flush();
    ob_flush();
    sleep(1);
}

然后,我会期待这样的行为:

# app.rb
def foo
  "Hello, world!"
end
foo

我们获取所需文件的最后一个评估对象,而不是# other_file.rb require_relative!('foo') # => "Hello, world!" &#39; require_relative返回的值。

有没有办法让true一样的行为?

1 个答案:

答案 0 :(得分:1)

这听起来像是一种不好的做法。 Ruby文件是ruby代码的存储,而不是数据。

惯用法你应该用类或模块创建一个Ruby文件,需要它并从中调用一些函数。

# foo.rb
module Foo
  extend self

  def foo
    "bar"
  end
end

# irb
require 'foo'
Foo.foo
#=> bar

否则,正如@sawa所提到的,你应该把文件作为字符串读取并评估它。哪个是惯用的错误。