土日にTermtterリファクタリング合宿に行って,Termtterのテストを書いたり,ビールを飲んだりしてた.テストが増えたのでよかったのだけど,id:Sixeightさんにいろいろ聞いて,ちょっとRubyの知識が増えた.
覚えたことのメモ.
method_missingでsuper
def method_missing(name, *args) if @data.key?(name) return @data[name] else super end end
- superしているのは,NoMethodErrorとかの処理を親クラスに任せるため
- ここで,elseがなければ,何を呼んでもnilが返ってしまう
定数は変更できる
定数は定数であるし,代入すると警告が出るので,変更できないと思っていたら,警告が出るだけで,変更できるらしい.
irb(main):007:0> RUBY_PLATFORM = "mswin" (irb):7: warning: already initialized constant RUBY_PLATFORM => "mswin" irb(main):008:0> RUBY_PLATFORM => "mswin"
他にもいろいろあったけど忘れた.
Rubyはわりと書けたけど,スレッドが絡むテストを書くのが難しかったりして,テストを書く力が足りない感じだった.
第二回リファクタリング合宿を開こうと言ってたので,それまでに勉強したい.