我编写了以下递归函数,以解析一些设置并正确填充我拥有的一些日志文件对象。
当我在Code Climate上运行此代码时,它告诉我不鼓励使用eval。是否有一种方法可以重写此方法,以便我不需要eval也不需要case语句?目前没有想到更好的方案。
当我在Code Climate上运行此代码时,它告诉我不鼓励使用eval。是否有一种方法可以重写此方法,以便我不需要eval也不需要case语句?目前没有想到更好的方案。
def parse(settings, logfile = nil)
settings.each do |key, value|
if value.is_a?(Hash)
logfile = Logmsg::LogFile.new
parse(value, logfile)
else
eval("logfile.#{key} = value")
end
end
end
有什么想法吗?
我正在尝试使用元编程方法中的instance_variable_set
,但是我仍然遇到了一些问题。由于某种原因,我的所有测试现在都失败了,原因是
Argument Error: comparison of Fixnum with String failed
我仍在努力弄清楚这个问题。