Ruby的BEGIN做了什么?

Ala*_*ano 12 ruby

BEGINRuby 中的含义是什么,它是如何调用的?例如,给定此代码:

puts "This is sentence 1."

BEGIN {
  puts "This is sentence 2."
}
Run Code Online (Sandbox Code Playgroud)

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

the*_*Man 19

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

例如,运行这个:

END { puts 'END block' }

puts 'foobar'

BEGIN { puts 'BEGIN block' }
Run Code Online (Sandbox Code Playgroud)

输出:

BEGIN block
foobar
END block

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


hal*_*elf 6

来自关键字Ruby文档BEGIN:

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