Ruby的BEGIN做了什么?

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

 puts "This is sentence 1." BEGIN { puts "This is sentence 2." } 

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

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

例如,运行这个:

 END { puts 'END block' } puts 'foobar' BEGIN { puts 'BEGIN block' } 

输出:

 BEGIN块
 foob​​ar的
结束块

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

来自BEGIN关键字的Ruby文档 :

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

BEGINEND

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

 BEGIN { begin block code } END { end block code } 

程序可以包括多个BEGINEND块。 BEGIN块按它们遇到的顺序执行。 END块以相反的顺序执行。

您可以在“ 开始…结束时表示’块’? ”中找到几乎相同的post。

阅读有关tutorialspoint上的块的更多信息