2016-10-20 10 views
0

標準的な方法はRubyで変数を変更する関数を呼び出す方法は?

foo = bar(foo) 

ようなものになるだろう。しかし、私は単純に最初の行のようなfooの値を変更します

bar(foo) 

を書くための方法のいくつかの種類をしたいと思います。 C++ではポインタでこれを行うことができましたが、Rubyではどのようにすればよいか分かりません。

+0

Rubyにはポインタがないため、ここではそのようなことはできません。 –

+0

あなたは 'def m(s);のように言うことができます。 Rubyが値渡し(値が参照であるところ)であっても、引数を変更するにはs.gsub(...); end'を使用します。あなたは 'h [:arg] = 6;のような醜いこともすることができます。 m(h) 'とし、別の' h [:arg] 'で終わります。お勧めはしませんが、不愉快なことが必要な場合もあります。 –

答えて

3

これはRubyでは不可能です。 foo = bar(foo)と書く必要があります。

もう1つの方法は、fooを可変オブジェクトにすることです。その後、barはメソッドを呼び出してそれを変更することができます。たとえば、fooがString、Hash、またはArrayの場合、barは​​を呼び出してfooが参照するオブジェクトを変更できます。

+0

しかし、変数を変更することはありません。それはオブジェクトを突然変異させるでしょう。 –

0

これはできません。あなたが探しているものは、参照渡しのいくつかの形式です。しかし、Rubyは厳密に値渡しです。

関連する問題