[#47861] ruby1.9.2 ruby-debug19-0.11.6.gem のローカルインストール — eiichi_maekawa@...

20 messages 2011/02/10
[#47874] Re: ruby1.9.2 ruby-debug19-0.11.6.gem のローカルインストール — eiichi_maekawa@... 2011/02/15

前川です。

[#47875] Re: ruby1.9.2 ruby-debug19-0.11.6.gem のローカルインストール — OZAWA Sakuro <sakuro@2238club.org> 2011/02/15

さくです。

[#47876] Re: ruby1.9.2 ruby-debug19-0.11.6.gem のローカルインストール — eiichi_maekawa@... 2011/02/15

[#47877] Re: ruby1.9.2 ruby-debug19-0.11.6.gem のローカルインストール — OZAWA Sakuro <sakuro@2238club.org> 2011/02/15

さくです。

[#47878] Re: ruby1.9.2 ruby-debug19-0.11.6.gem のローカルインストール — Kenta Murata <muraken@...> 2011/02/15

むらたです。

[ruby-list:47817] 参照渡しの実現方法は?

From: "YOSHIIZUMI" <t-yoshiizumi@...>
Date: 2011-02-01 14:27:50 UTC
List: ruby-list #47817
 吉泉といいます。
 ルビマをいつも興味深く読ませていただいています。感謝。

 32号で、「値渡しと参照渡しの違いを理解する」がありました。
 rubyも基本的には値渡しだと思いますが、参照渡しを実現する方法ってある
んでしょうか。
 記事中にあった例でいうと

−−−−−−−−
def foo(a, b)
  a += 1
  b += 2
end
x = 10
y = 20
foo(x, y)
p x  # => 10  ほんとは 11 になって欲しい
p y  # => 20  ほんとは 22 になって欲しい
−−−−−−−−

 時々「参照渡しができれば便利」と思うことがあります。C言語で &x でア
ドレスを取り出し、*a でポインタとして受け取るみたいなイメージです。安
易に使うと後でデバッグに苦しむことはありますが。
 メソッドfooの引数が文字列なら

−−−−−−−−
def foo(a, b)
  a.gsub!(/^/, "!")
  b.gsub!(/^/, "#")
end
x = "abc"
y = "xyz"
foo(x, y)
p x  # => "!abc"
p y  # => "#xyz"
−−−−−−−−

 こんな感じで、メソッド内での処理結果を呼び出し元に反映させることがで
きますが、数値の場合にどうしたら実現できるのか……
 というか、引数のデータ型が何であっても、呼び出し元に処理結果を反映さ
せて返したい、というのが希望です。
 一つの素直な方法としては、メソッド foo の最後に「return a, b」を置い
て、呼び出す時は
    x, y = foo(x, y)
とするのが一番無難なのかもしれません。
 また、引数を配列(Array)にセットして渡すというのも一つの方法だとは思
います。
 でも、もっと単純に参照渡しができないものかと、
 何か方法があったらアドバイスをお願いします。


In This Thread

Prev Next