Friday, October 24, 2008

Ruby method再定義

メソッドの再定義は通常
class Example
  alias_method old_reverse reverse
  def reverse
    result = old_reverse
    ....
  end
end

というような形でやるけど
old_reverseが既に定義されていたらまずい
class Example
  old_reverse_method = instance_method :reverse
  define_method :reverse do
    result = old_reverse_method.bind(self).call
    .....
    result
  end
end 
というやり方があると

 

No comments: