rubyは演算子もメソッドだということなので、試しに再定義してみた。
class Float ['+', '-', '*', '/'].each do |num| define_method(num) do |other| "UMAIBOU" end end end p 1.0 + 1.0 p 1.0 - 1.0 p 1.0 * 1.0 p 1.0 / 1.0 $ ruby test.rb "UMAIBOU" 0.0 "UMAIBOU" "UMAIBOU"
できた。
でもマイナスだけできてない。謎すぎる。
マイナスはFloatではないのか。
class Float ['+', '-', '*', '/'].each do |num| define_method(num) do |other| "UMAIBOU" end end end p 1.0 + 1.0 p 1.0 - 1.0 p 1.0 * 1.0 p 1.0 / 1.0 p 1.0.class a = 1.0 - 1.0 p a.class $ ruby test.rb "UMAIBOU" 0.0 "UMAIBOU" "UMAIBOU" Float Float
Floatである。
ためしにFixnumもやってみる。
class Float ['+', '-', '*', '/'].each do |num| define_method(num) do |other| "UMAIBOU" end end end class Fixnum ['+', '-', '*', '/', '%'].each do |num| define_method(num) do |other| "UMAIBOU2" end end end p 1.0 + 1.0 p 1.0 - 1.0 p 1.0 * 1.0 p 1.0 / 1.0 p 1.0.class a = 1.0 - 1.0 p a.class p 1 + 1 p 1 - 1 p 1 * 1 p 1 / 1 $ ruby test.rb "UMAIBOU" "UMAIBOU" "UMAIBOU" "UMAIBOU" Float String "UMAIBOU2" "UMAIBOU2" "UMAIBOU2" "UMAIBOU2"
どういうことなのか。
まったくわからない。