バインディングと共にパラメーターを渡す以外に、渡されたオブジェクトをブロック/メソッド内で変更して、変更を初期オブジェクトに反映させる方法はありますか?
要件が次のものを変換することであると想像してください。
{one:1, two:2, three:3, four:4}
の中へ{one:"1", two:"22", three:"333", four:"4444"}
私は次のようなことを考えていました:
{one:1, two:2, three:3, four:4}.each!{ |k,v| v = v.to_s * v }
渡された変数への変更が実際のハッシュに反映される場所。
このような能力を持つことは効率的かもしれないと思いますか?そのため、ブロックは、新しいオブジェクトを作成してから割り当てることなく、これらのオブジェクトを直接操作できます。
このような問題を解決するには、オブジェクトのデータ型の複数の不要な変更が必要であり、非効率的である可能性があります。
new_hash = Hash[{one:1, two:2, three:3, four:4}.collect{ |k,v| [k, v.to_s * v] }]
それぞれに似たものがあるのかなと思っていたので!それをするために。