Ruby 有BEGIN {}
和END {}
块保证它们分别在代码的主要部分之前和之后运行。
我有以下代码:
BEGIN {
$my_args = ARGV.dup
ARGV.clear
} # clean up 'gets'
# For the truly paranoid in all of us
def self.run_away?
print "You're paranoid. Exit? (Y/n) "
ans = gets.chomp.downcase
if ["no", "n"].include?(ans)
puts "Alright, your call. Let's keep going."
else
puts "EXITING"
log("Exiting at paranoid users request.")
exit 3
end
end
END { } # do stuff here
我在脚本中定义了一些错误代码。我希望能够读取错误代码并根据该代码打印简短描述。例如 -EXITING - 3: Exit at user request
而不是每次我exit
在我的代码中使用一个描述性字符串。有没有办法在END {}
块中做到这一点?还是我想念的其他东西?
编辑/注意:我坚持使用 Ruby 1.8.7 ,以下不起作用:(见下文)
BEGIN { puts "BEGIN block!" }
puts "Main block!"
exit 3
END {
puts "END block!"
puts "Current Exception: \n#{$!}"
puts "Current Backtrace: \n#{$@}"
}
输出:
~: $ ./test.rb
BEGIN block!
Main block!
~: $ echo $?
3
~: $
编辑#2:我必须END
在退出之前定义我的块。感谢@Stefan