Ruby 1.9.2 と Ruby on Rails v3.2.2 gem を使用しています。次のコードを 1 行にリファクタリングしたいと思います。
args ||= {}
@i_vars = {}
args.each { |key, opts| @i_vars[key] = IVar.new(key, opts, args.keys) }
私は次のような注入方法を使用することを考えました:
args ||= {}
@ivars = args.inject({}) { |result, (key, opts)| result.merge( @i_vars[key] = IVar.new(key, opts, args.keys) ) }
ただし、後者のコードは、@i_vars
変数を設定するときに異なる結果を返します。メソッドの他の実装も試しましinject
たが、成功しませんでした。
コードをリファクタリングする方法はありますか? それとも、他の方法や RoR 機能 (私には不明) を使用する必要がありますか?