【发布时间】:2017-07-25 10:16:21
【问题描述】:
有没有办法合并单个哈希的值?
例子:
address = {
"apartment" => "1",
"building" => "Lido House",
"house_number" => "20",
"street_name" => "Mount Park Road",
"city" => "Greenfield",
"county" => nil,
"post_code" => "WD1 8DC"
}
我们能得到这样的结果吗?
1 Lido House,
20 Mount Park Road,
Greenfield,
WD1 8DC
address.compact 将删除等于 nil 的值,但如果在一个方法中包含字符串插值并且您想排除某些地址的 nil 值并包含在末尾没有逗号的其他地址,该怎么办?
def address(hash)
hash.compact
puts "#{hash["apartment"]} #{hash["building"]}, \n#{hash["house_number"]} #{hash["street_name"]}, \n#{hash["city"]}, \n#{hash["county"]}, \n#{hash["post_code"]}"
end
【问题讨论】:
-
到目前为止你尝试过什么?一种可能的解决方案是遍历连接值字符串的哈希中的每个键。
-
大家回答后,你改了问题!!总结一下:不,如果某些值是
nil,ruby 没有“神奇”的方式来知道字符串应该如何格式化。这个逻辑需要你自己写,但不是很复杂。只需创建一个result变量,并根据一些简单的条件附加到它。您对Hash#compact的使用也是不必要的(甚至没有做任何事情!)。 -
是的,我正在考虑删除问题并重新发布,但既然已经回答了,我想我会感谢那些做过的人。我做了类似于你建议的事情,除了我没有创建变量并附加到它。我仍在学习,并试图在提交之前找出回答问题的替代方法。科技界的理解发生了什么?!