我正在使用ruby 1.8.7。我本可以发誓说我之前已经在我的脚本底部编写了我的函数,但它运行正常。
我必须将它们放在顶部吗?这似乎是他们现在工作的唯一方式。没有大碍。我只想把它们放在底部,所以我想我会问。
答案 0 :(得分:17)
您可以在一个或多个BEGIN块中初始化代码(从Perl继承,从awk继承它们)。
can_i_do_this? #=>yes
BEGIN {
def can_i_do_this?
puts "yes"
end
}
为了完整起见,还有END块:
END {
can_i_do_this? #=> yes
}
def can_i_do_this?
puts "yes"
end
答案 1 :(得分:6)
a
def a
puts "Hello world!"
end
在Ruby中运行此脚本将为您提供:
script.rb:1:in `<main>': undefined local variable or method `a' for main:Object (NameError)
所以不,你不能把它们放在底部。由于Ruby是一种解释型语言,因此只能在运行时解析和处理任何代码。因此,您只能运行在实际引用之前已经定义的代码(调用方法,使用变量...)。