脚本底部的Ruby方法?

Jar*_*ley 11 ruby methods scripting

我正在使用ruby 1.8.7.我本来可以发誓说我之前已经在我的脚本底部编写了我的函数,并且工作正常.

我必须把它们放在顶部吗?这似乎是他们现在工作的唯一方式.没有大碍.我只是喜欢把它们放在底部所以我想我会问.

ste*_*lag 20

您可以在一个或多个BEGIN块中初始化代码(从Perl继承,从awk继承它们).

can_i_do_this? #=>yes

BEGIN {
  def can_i_do_this?
    puts "yes"
  end
}
Run Code Online (Sandbox Code Playgroud)

为了完整起见,还有END块:

END {
  can_i_do_this? #=> yes
}

def can_i_do_this?
  puts "yes"
end
Run Code Online (Sandbox Code Playgroud)


And*_*ros 7

a
def a
  puts "Hello world!"
end
Run Code Online (Sandbox Code Playgroud)

在Ruby中运行此脚本将为您提供:

script.rb:1:in `<main>': undefined local variable or method `a' for main:Object (NameError)
Run Code Online (Sandbox Code Playgroud)

所以不,你不能把它们放在最底层.由于Ruby是一种解释型语言,因此只能在运行时解析和处理任何代码.因此,您只能运行在实际引用之前已定义的代码(调用方法,使用变量...).