Ruby検定予想問題をやってみた

申し込みページが前日にforbiddenだったRuby検定、当日にはちゃんとページができてて出題範囲も出てた。予想問題でも考えてみるかな・・・と思っていたらすでに作ってる人がいたのでやってみた。

不正解のところだけメモ。

Q9: 単項のマイナス演算子の定義方法。こんなん知らん^^;

Q16: ===演算子の挙動。FixnumはIntegerのサブクラスなので、Integer===123はtrueになる。

Q22: 多重例外処理の挙動。そういえばあまり複雑なのは書いたことがなかった。弱点発見。

begin
  raise StandardError
rescue StandardError
  exit
ensure
  puts "ensure"
end

で exit と書いてあっても "ensure" が出力される、が正解。なぜかというと、exitはSystemExit例外をraiseし、終了に必要な処理を実行していく*1。このとき、ちゃんとensure節が実行されるらしい。へー。へー。へー。

ちなみに、exitをexit!にすると終了処理が省略されるので、何も表示されない。知ってた??