Переосмысление Float#/
, кажется, не имеют никакого эффекта:обезьяны заплат Float Infix оператора Производит Неожиданные результаты
class Float
def /(other)
"magic!"
end
end
puts 10.0/2.0 # => 5.0
Но когда другой инфикс оператор Float#*
переопределяется, Float#/
вдруг принимает новое определение:
class Float
def /(other)
"magic!"
end
def *(other)
"spooky"
end
end
puts 10.0/2.0 # => "magic!"
Я хотел бы услышать, сможет ли кто-нибудь объяснить источник этого поведения, и если кто-то другой получит те же результаты.
- Ruby: рубин 2.0.0p353 (2013-11-22) [x64-mingw32]
Чтобы быстро подтвердить ошибку, запустите this script.
подтвержден на Ubuntu 13.04 с Рубином 2.0.0p247. Возможно, это будет указано как ошибка? [Ruby Issue Tracker] (https://bugs.ruby-lang.org/) – screenmutt
Для меня оба дают '' магия ''вывод ... Я на' kirti @ kirti-Aspire-5733Z: ~ $ ruby - v ruby 2.0.0p0 (2013-02-24 версия 39474) [i686-linux] kirti @ kirti-Aspire-5733Z: ~ $ ' –
Получил тот же результат на Mac/MRI Ruby 2.0.0 –