13

BEGIN在 Ruby中是什么意思,它是怎么称呼的?例如,给定以下代码:

puts "This is sentence 1."

BEGIN {
  puts "This is sentence 2."
}

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

4

3 回答 3

20

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

例如,运行这个:

END { puts 'END block' }

puts 'foobar'

BEGIN { puts 'BEGIN block' }

输出:

开始块
富吧
结束块

BEGIN通常我们会为and块使用更多的逻辑顺序END,但这展示了它们的作用。

于 2012-12-27T06:28:03.040 回答
6

来自关键字的Ruby 文档BEGIN

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

于 2012-12-27T06:27:26.937 回答
4

BEGINEND

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

BEGIN { 
   begin block code 
} 

END { 
   end block code 
}

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

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

阅读更多关于教程点的块

于 2012-12-27T12:12:34.827 回答