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!にすると終了処理が省略されるので、何も表示されない。知ってた??