永井@知能.九工大です.

From: YOSHIIZUMI <t-yoshiizumi / msb.biglobe.ne.jp>
Subject: [ruby-list:47824] Re: 参照渡しの実現方法は?
Date: Thu, 3 Feb 2011 06:33:52 +0900
Message-ID: <1296682455.8599.28046_Mocchan.SGM02061 / pop.nifty.com>
>  きしもとさん、resありがとうございました。
>  rubyについて、時々「こんなプログラム記述もできるんだ」と意外感を味わうことが
> あるので、もしかして参照渡しについても何かあるのでは、と思ったのですが、難しい
> んですね。
>  難しいことが分かったのも私には収穫です。

無理矢理にやる例の一つくらいはあってもいいですよね.
期待通りのものではないとは思いますが,
binding を使う方法でこんなのはどうですか?
----------------------------------------------------------------
def swap_value(binding_obj, var_name1, var_name2)
  x, y = binding_obj.eval("[#{var_name1}, #{var_name2}]")
  x, y = y, x
  binding_obj.eval("#{var_name1}, #{var_name2} = #{x}, #{y}")
end

x = 1; y = 2
p [x, y] #=> [1, 2]
swap_value(binding, :x, :y)
p [x, y] #=> [2, 1]
----------------------------------------------------------------
-- 
永井 秀利  (nagai / ai.kyutech.ac.jp)
九州工業大学大学院情報工学研究院知能情報工学研究系知能情報メディア部門助教