znzの日記

 | 

2006-10-11

ENDat_exitの違い

http://www.atdot.net/~ko1/diary/200610.html#d10 を見てENDat_exitの違いが気になったので調べてみる。

3.times {|n|
  at_exit {
    puts "at_exit #{n}"
    3.times {|m|
      at_exit {
        puts "at_exit #{n} at_exit #{m}"
      }
    }
  }
  END {
    puts "END #{n}"
    3.times {|m|
      END {
        puts "END #{n} END #{m}"
      }
    }
  }
}

実行結果:

ruby 1.8.2 (2005-04-11) [i386-linux]
at_exit 2
at_exit 1
END 0
at_exit 0
at_exit 0 at_exit 2
at_exit 0 at_exit 1
at_exit 0 at_exit 0
END 0 END 0
at_exit 1 at_exit 2
at_exit 1 at_exit 1
at_exit 1 at_exit 0
at_exit 2 at_exit 2
at_exit 2 at_exit 1
at_exit 2 at_exit 0

他にはENDはメソッドの中では使えないとか。

 |