我正在使用 Ruby 1.9.2 和 Ruby on Rails v3.2.2 gem。我想将以下代码重构为一行:
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 功能(我不知道)?