WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

Rubyでのオープンクラス

      2015/05/17

オープンクラス

fooと出力する単純なメソッドを持つHogeというクラスを定義する。

2.1.0-preview2 :001 > class Hoge
2.1.0-preview2 :002?>   def foo
2.1.0-preview2 :003?>     puts "foo"
2.1.0-preview2 :004?>     end
2.1.0-preview2 :005?>   end
 => :foo 
2.1.0-preview2 :006 > hoge = Hoge.new
 => # 
2.1.0-preview2 :007 > hoge.foo
foo
 => nil 

もう一回下記のようにbarと出力するメソッドを持つように定義する。

2.1.0-preview2 :008 > class Hoge
2.1.0-preview2 :009?>   def bar
2.1.0-preview2 :010?>     puts "bar"
2.1.0-preview2 :011?>     end
2.1.0-preview2 :012?>   end
 => :bar 

Rubyではこれはクラスを再定義しているのではなく、クラスを「再オープン」している。
前に定義したfooというメソッドが生きてるし、barも使える。

2.1.0-preview2 :013 > hoge.bar
bar
 => nil 
2.1.0-preview2 :014 > hoge.foo
foo
 => nil 

参考資料

 - Ruby , ,