Другим интересным подходом было бы передать блок методу Fixnum module_eval
. Так, например:
module FixnumExtend
puts '..loading FixnumExtend module'
Fixnum.module_eval do |m|
alias_method :plus, :+
alias_method :min, :-
alias_method :div, :/
alias_method :mult, :*
alias_method :modu, :%
alias_method :pow, :**
def sqrt
Math.sqrt(self)
end
end
end
Теперь, после включения FixnumExtend в мое приложение, я могу сделать:
2.plus 2
=> 4
81.sqrt
=> 9
Я использую этот подход, чтобы помочь моему механизму OCR распознавать рукописный код. С 2.div 2
легче, чем с 2/2
.