オープンクラスが何気に便利

Rubyでは既存クラスに対して動的に拡張を行うことができる。
ちょっとした機能を追記する際にクラスを継承して新規にクラスを生成するよりも
既存のクラスに新しく定義を追加してやった方がシンプルで良い。

ということでごく簡単なサンプルで遊んで見る。

class String
  
  def speak
    "#{self} >(●´ω`●)"
  end  
end

puts "既存クラスも拡張できる!".speak   #既存クラスも拡張できる! >(●´ω`●)

こんな感じで既存クラスも楽々拡張できる。
ただし、オープンクラスは拡張した効果が伝播する範囲を制限できないので、
既存メソッドをオーバーライドしたりすると、
それ以前にオーバーライドしたメソッドを利用している部分全てに効果が影響するので注意が必要です。