i限定じゃないのを考えてみた。
ちうわけで、i限定じゃないモノです。まあ、インチキに変わりはない。
def div(x,y) eval(<<EOS, TOPLEVEL_BINDING) local_variables.each{|vname| if eval(vname) == #{x} eval("\#{vname} = #{x/y}") end } EOS end d = 12345678987654321 div(d, 111111111) p(d) #=> 111111111 p(d == 111111111) #=> true p(d * 111111111) #=> 12345678987654321
まあ、これだと値が同じ変数が全て上書きされてしまうという問題が。まあいいか。