仕事現場では最近になって、ようやくRubyっぽいコードが~みたいなノリに なってきましたが。Ruby言語仕様ってあんまり語られなかったりすんのかなって。 そんな中で、この講演は非常に面白かったです。
前半は、Rubyのprotectedって微妙じゃね?っていう。 Javaとかから流れてきた人のコードとかバンバン使ってるし、 Railsでもバンバン使われてるけど、オブジェクトの外からでも呼べちゃうんだぜ的な。 いらなくね?的な。
他にも、pとppの違いとか、to_sとinspectの違いとか、 unlessとかuntilとか使うとわかりやすいよね~とか。
ただ、一番へぇ~って思ったのは、Ruby1.8と1.9の差を埋めるハック。 1.8だとsendで呼べたのが、1.9だとfuncallってやんないと呼べない場合。
↓funcallがなかったら、sendに割り当てちゃうぜっていう。 これだったら、funcallで呼べば1.8でも1.9でもOK。 unless Object.method_defined?(:funcall) class Object alias funcall send end end