我的应用程序传递给不同的方法一个json_element
,其中的密钥是不同的,有时是空的。使用红宝石提取散列值以干的方式
来处理它,我一直在硬编码的提取与下面的示例代码:
def act_on_ruby_tag(json_element)
begin
# logger.progname = __method__
logger.debug json_element
code = json_element['CODE']['$'] unless json_element['CODE'].nil?
predicate = json_element['PREDICATE']['$'] unless json_element['PREDICATE'].nil?
replace = json_element['REPLACE-KEY']['$'] unless json_element['REPLACE-KEY'].nil?
hash = json_element['HASH']['$'] unless json_element['HASH'].nil?
我想消除硬编码值,并不太清楚如何。
我开始想通过它,如下所示:
keys = json_element.keys
keys.each do |k|
set_key = k.downcase
instance_variable_set("@" + set_key, json_element[k]['$']) unless json_element[k].nil?
end
然后在方法的其余部分使用@code
例如。
我打算尝试变成一种方法,然后替换所有这些硬编码的代码。
但我不完全确定这是否是一条好路径。
谢谢...我意识到,“$”,实际上是用CobravsMongoose gem.BUT的artfact ...真正的问题是,你正在讨论什么....拔出钥匙,并检查如果有价值或没有错误出局。 有时其中一个键没有值 - 它是空的。这就是为什么我有'零'检查。 – Angela
空和'无?'是两回事,请牢记这一点。如果你只是在寻找可以导入的东西,那么测试vs.'v'就足够了。最小代码通常更容易调试。 – tadman