武田哲也さんのRuby技術者認定試験受験記
出力
#RubyGold p は inspect なのに対し、print は to_s で表示。かろうじて正解。 jampin.blog20.fc2.com/blog-entry-138… to_str は微妙に違う。忘れてたな~ qiita.com/tbpgr/items/19…
2015-01-11 09:52:25例外処理
#RubyGold rescue 節で型を省略すると、StandardError 一族の例外を捕捉。知ってたし正解したけど、改めて聞かれると自信なかった。 このお方が Exception との違いも説明してくれててありがたい。 qiita.com/kasei-san/item…
2015-01-11 10:01:49#RubyGold ensure 節あるときの評価値はどうなるかってやつ。これ間違えた。 def m begin puts "begin" 1 ensure puts "ensure" 2 end end p m
2015-01-11 10:06:11#RubyGold (続き)上記コードは begin ensure 1 と出力する。最後「2」じゃない! docs.ruby-lang.org/ja/2.1.0/doc/s… 「いずれにしてもensure節の値は無視されます」かー。そういや昔読んだような気はするが・・
2015-01-11 10:08:35定数
#RubyGold メソッド内で定数を更新(=定義)すると SyntaxError 発生。 blog.ruedap.com/2011/02/04/rub… rochefort.hatenablog.com/entry/2013/05/… ここまではわりと有名だが、
2015-01-11 10:11:28#RubyGold (続き)下記のうち「文法エラーになる2つはどれ?」という問題で X = "abc" def m (1) X (2) X = "def" (3) X += "def" (4) X << "def" end
2015-01-11 10:12:51#RubyGold (続き)正解は2と3。 3は X = X + "def" で更新してるからあかんのだろう。 しかし <<(concat。+=ではない)は何の問題もないとは! 何それ~。
2015-01-11 10:13:22public/private/protected
#RubyGold protected, private の仕様を忘れ、完全に(初学者にありがちな)誤解してた・・ ここの解説とリンクが有益でした。 qiita.com/tbpgr/items/6f…
2015-01-11 10:43:08#RubyGold (続き)まとめると ・private レシーバ経由で呼べない、関数形式のみ許容 ・protected レシーバ経由でも呼べる。ただし仲間に限る ・どっちもサブクラスからも呼べる(C++とは違う) ・どっちも他人からは呼べない ってとこか。
2015-01-11 10:45:36メソッド/クラス定義の返値
YAML
#RubyGold YAMLのことあんまり知らんかったことに気づいた。 YAML(を実装したSyckライブラリ)はいくつかの言語から使える。 magazine.rubyist.net/?0009-YAML loadだけでなくdumpもある。 magazine.rubyist.net/?0010-YAML
2015-01-11 10:56:54