Ruby 高级控制结构与可执行代码对象详解
1. BEGIN 和 END 语句及 at_exit 方法
在 Ruby 中, BEGIN 语句关联的代码无论在何种上下文出现,都只会执行一次。在 BEGIN 块内定义的变量在块外不可见,且块外的变量在此时也尚未定义。示例代码如下:
10.times {BEGIN { puts "loop" }} # Only printed once
而 END 语句不同,它在程序正常执行期间注册,与周围代码共享局部变量。若 END 语句处于未执行的条件语句中,则关联代码不会被注册执行;若在循环中多次执行 END 语句,关联代码也仅注册一次。示例如下:
a = 4;
if (true)
END { # This END is executed
puts "if"; # This code is registered
puts a # The variable is visible; prints "4"
}
else
END { puts "else" } # This is not executed
end
10.times {END { puts "loop" }} # Only ex
超级会员免费看
订阅专栏 解锁全文
11万+

被折叠的 条评论
为什么被折叠?



