重新定义Float#/
似乎无效:
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!"
我很想知道是否有人可以解释这种行为的来源以及其他人是否得到相同的结果。
要快速确认错误,请运行this script。
答案 0 :(得分:3)