標準的な方法はRubyで変数を変更する関数を呼び出す方法は?
foo = bar(foo)
ようなものになるだろう。しかし、私は単純に最初の行のようなfoo
の値を変更します
bar(foo)
を書くための方法のいくつかの種類をしたいと思います。 C++ではポインタでこれを行うことができましたが、Rubyではどのようにすればよいか分かりません。
標準的な方法はRubyで変数を変更する関数を呼び出す方法は?
foo = bar(foo)
ようなものになるだろう。しかし、私は単純に最初の行のようなfoo
の値を変更します
bar(foo)
を書くための方法のいくつかの種類をしたいと思います。 C++ではポインタでこれを行うことができましたが、Rubyではどのようにすればよいか分かりません。
これはRubyでは不可能です。 foo = bar(foo)
と書く必要があります。
もう1つの方法は、foo
を可変オブジェクトにすることです。その後、bar
はメソッドを呼び出してそれを変更することができます。たとえば、foo
がString、Hash、またはArrayの場合、bar
はを呼び出してfoo
が参照するオブジェクトを変更できます。
しかし、変数を変更することはありません。それはオブジェクトを突然変異させるでしょう。 –
これはできません。あなたが探しているものは、参照渡しのいくつかの形式です。しかし、Rubyは厳密に値渡しです。
Rubyにはポインタがないため、ここではそのようなことはできません。 –
あなたは 'def m(s);のように言うことができます。 Rubyが値渡し(値が参照であるところ)であっても、引数を変更するにはs.gsub(...); end'を使用します。あなたは 'h [:arg] = 6;のような醜いこともすることができます。 m(h) 'とし、別の' h [:arg] 'で終わります。お勧めはしませんが、不愉快なことが必要な場合もあります。 –