Chr*_*mps 6 ruby monkeypatching arithmetic-expressions
重新定义Float#/似乎没有效果:
class Float
def /(other)
"magic!"
end
end
puts 10.0/2.0 # => 5.0
Run Code Online (Sandbox Code Playgroud)
但是当Float#*重新定义另一个中缀运算符时,Float#/突然采用新的定义:
class Float
def /(other)
"magic!"
end
def *(other)
"spooky"
end
end
puts 10.0/2.0 # => "magic!"
Run Code Online (Sandbox Code Playgroud)
我很想知道是否有人可以解释这种行为的来源以及是否有其他人得到相同的结果.
要快速确认错误,请运行此脚本.