Чтобы подробнее остановиться на ответ Михаила , нет необходимости определять все эти методы вручную. Обратите внимание, что я явно пропускаю два метода Math, которые принимают два аргумента.
class Numeric
(Math.methods - Module.methods - ["hypot", "ldexp"]).each do |method|
define_method method do
Math.send method, self
end
end
end
puts 25.sqrt
puts 100.log10
Выход:
5.0
2.0
Что касается того, почему эти методы уже не включены в Numeric
, я действительно не уверен в веской причине. Я не думаю, что загрязнение пространства имен, поскольку Эндрю упомянул , представляет особый риск в классе Numeric
; Майкл, вероятно, на правильном пути с историческим переходом.