Ruby的BEGIN做了什么?

时间:2012-12-27 06:19:01

标签: ruby

BEGIN在Ruby中意味着什么,它是如何调用的?例如,给定此代码:

puts "This is sentence 1."

BEGIN {
  puts "This is sentence 2."
}

为什么puts "This is sentence 2."先被执行?

3 个答案:

答案 0 :(得分:19)

BEGINEND设置在执行任何其他操作之前调用的块,或者在解释器退出之前设置其他所有块。

例如,运行此:

END { puts 'END block' }

puts 'foobar'

BEGIN { puts 'BEGIN block' }

输出:

BEGIN block
foobar
END block

通常我们会对BEGINEND块使用更多逻辑顺序,但这证明了它们的作用。

答案 1 :(得分:6)

来自Ruby docs for the BEGIN keyword

  

BEGIN:通过代码块指定在程序开始顺序执行之前无条件执行的代码。有时用于模拟对方法的前向引用。

答案 2 :(得分:4)

BEGINEND阻止

每个Ruby源文件都可以声明在加载文件时运行的代码块(BEGIN块)以及程序执行完毕后(END块)。

BEGIN { 
   begin block code 
} 

END { 
   end block code 
}

程序可能包含多个BEGINEND块。 BEGIN块按照遇到的顺序执行。 END块以相反的顺序执行。

您可以在“Does begin . . . end while denote a 'block'?”中找到几乎相同的帖子。

详细了解tutorialspoint

上的广告块