BEGIN
在Ruby中意味着什么,它是如何调用的?例如,给定此代码:
puts "This is sentence 1."
BEGIN {
puts "This is sentence 2."
}
为什么puts "This is sentence 2."
先被执行?
答案 0 :(得分:19)
BEGIN
和END
设置在执行任何其他操作之前调用的块,或者在解释器退出之前设置其他所有块。
例如,运行此:
END { puts 'END block' }
puts 'foobar'
BEGIN { puts 'BEGIN block' }
输出:
BEGIN block foobar END block
通常我们会对BEGIN
和END
块使用更多逻辑顺序,但这证明了它们的作用。
答案 1 :(得分:6)
来自Ruby docs for the BEGIN
keyword:
BEGIN
:通过代码块指定在程序开始顺序执行之前无条件执行的代码。有时用于模拟对方法的前向引用。
答案 2 :(得分:4)
BEGIN
和END
阻止
每个Ruby源文件都可以声明在加载文件时运行的代码块(BEGIN
块)以及程序执行完毕后(END
块)。
BEGIN {
begin block code
}
END {
end block code
}
程序可能包含多个BEGIN
和END
块。 BEGIN
块按照遇到的顺序执行。 END
块以相反的顺序执行。
您可以在“Does begin . . . end while denote a 'block'?”中找到几乎相同的帖子。
详细了解tutorialspoint
上的广告块