October 21, 2013

Ruby 中的方法拦截

使用 alias_method

如果想调整 实例方法 的行为,例如在执行 to_i 方法之前验证字符串的格式,可以这样:

class String

def to_i_with_validation

raise "Invalid integer format: #{self.inspect}" if self !~ /\A-?\d+\Z/

to_i_without_validation

end

alias_method :to_i_without_validation, :to_i

alias_method :to_i, :to_i_wit......