武田哲也さんのRuby技術者認定試験受験記

武田哲也 @__takeda さんのRuby技術者認定試験の受験記。 昨年末ぐらいに Ruby 2.1 対応になったんですよね(それまで1.8…)。
3
リンク Qiita Ruby - ブロックをdo…endで書くか{…}で書くかにより挙動が変わる例 - Qiita [Ruby - Nokogiriによるスクレイピング(YahooFinance) - Qiita](http://qiita.com/amatsu1108/items/5f0825249182dbfb9e8d#comment-8838...

出力

武田哲也 @__takeda

#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
リンク jampin.blog20.fc2.com insectとto_s | アルミナ解析室 Ruby / Ruby on Railsを中心にした、プログラミング技術に関しての話題
リンク Qiita Ruby | 文字列への明示的変換と暗黙的変換。Object#to_s , Object#to_str の使い分け - Qiita # Ruby | 文字列への明示的変換と暗黙的変換。Object#to_s , Object#to_str の使い分け ## 概要 文字列への明示的変換と暗黙的変換。Object#to_s , Object#to_str の使い分け...

例外処理

武田哲也 @__takeda

#RubyGold rescue 節で型を省略すると、StandardError 一族の例外を捕捉。知ってたし正解したけど、改めて聞かれると自信なかった。 このお方が Exception との違いも説明してくれててありがたい。 qiita.com/kasei-san/item…

2015-01-11 10:01:49
リンク Qiita rubyの例外についてまとめてみた - Qiita ちょっとこんがらがったので整理 ### 先に結論 - アプリケーションレベルでの標準的なエラーは StandardError のサブクラス - 型指定なしで rescue すると、StandardError のサブクラスのみ c...
武田哲也 @__takeda

#RubyGold ensure 節あるときの評価値はどうなるかってやつ。これ間違えた。 def m begin puts "begin" 1 ensure puts "ensure" 2 end end p m

2015-01-11 10:06:11
武田哲也 @__takeda

#RubyGold (続き)上記コードは begin ensure 1 と出力する。最後「2」じゃない! docs.ruby-lang.org/ja/2.1.0/doc/s…いずれにしてもensure節の値は無視されます」かー。そういや昔読んだような気はするが・・

2015-01-11 10:08:35

定数

武田哲也 @__takeda

#RubyGold メソッド内で定数を更新(=定義すると SyntaxError 発生blog.ruedap.com/2011/02/04/rub… rochefort.hatenablog.com/entry/2013/05/… ここまではわりと有名だが、

2015-01-11 10:11:28
武田哲也 @__takeda

#RubyGold (続き)下記のうち「文法エラーになる2つはどれ?」という問題で X = "abc" def m (1) X (2) X = "def" (3) X += "def" (4) X << "def" end

2015-01-11 10:12:51
武田哲也 @__takeda

#RubyGold (続き)正解は2と3。 3は X = X + "def" で更新してるからあかんのだろう。 しかし <<concat+=ではないは何の問題もないとは! 何それ~。

2015-01-11 10:13:22
リンク アインシュタインの電話番号 Rubyの定数、もうひとつの意外な仕様 - アインシュタインの電話番号 Rubyの定数が、他の言語の定数とはちょっと違う意外な仕様なのは理解していたが、もうひとつ意外な仕様があることを最近知った。なんかちょっと釣りっぽいタイトルになっちゃったけど。再代入可能な定数Rubyの定数は、他の言語のように変更を許さない(再代入させな...
リンク http://rochefort.hatenablog.com/ rubyのメソッド内で定数は定義できない - rochefort's blog gold対策。 class C def foo CONST = 'aaa' end end # ~> -:3: dynamic constant assignment # ~> CONST = 'aaa' # ~> これは単純に知らなかったのですが、メソッド内で定数は定義できません。 (基礎力確認問題5)こっちはエラー内容は同じですが メソッド内にて定数を変更しようとしているところでエラーとなっています。 (コメントもらって、subjectに合わせて内容修正しました。thanks) $ cat -n k0

public/private/protected

武田哲也 @__takeda

#RubyGold protected, private の仕様を忘れ、完全に(初学者にありがちな)誤解してた・・ ここの解説とリンクが有益でした。 qiita.com/tbpgr/items/6f…

2015-01-11 10:43:08
リンク Qiita Ruby | Ruby の private と protected 。歴史と使い分け - Qiita # Ruby | Ruby の private と protected 。歴史と使い分け ## 概要 Ruby の private と protected の歴史と使い分けについて説明します。 いろんなところで断片的に書かれている...
武田哲也 @__takeda

#RubyGold (続き)まとめると ・private レシーバ経由で呼べない、関数形式のみ許容protected レシーバ経由でも呼べる。ただし仲間に限るどっちもサブクラスからも呼べるC++とは違う) ・どっちも他人からは呼べない ってとこか。

2015-01-11 10:45:36

メソッド/クラス定義の返値

武田哲也 @__takeda

#RubyGold おお、2.1.5ではたしかにクラス定義がnilじゃなくシンボルを返してる・・これも出題されたりするんやろか

2015-01-11 10:47:10

YAML

武田哲也 @__takeda

#RubyGold YAMLのことあんまり知らんかったことに気づいた。 YAML(を実装したSyckライブラリ)はいくつかの言語から使える。 magazine.rubyist.net/?0009-YAML loadだけでなくdumpもある。 magazine.rubyist.net/?0010-YAML

2015-01-11 10:56:54