我正在尝试遍历散列,打印出格式化列表中的键和值。我的理解是字符串插值#{}会隐式地将符号转换为字符串。然而,当我运行下面的代码(略有删节):Ruby:如何在字符串插值符号内使用gsub方法#{}
holiday_hash = {
:winter => {:new_years => ["Party Hats", "Champagne"]}
}
holiday_hash.each do |key,value|
value.each do |key, value|
puts "#{key.gsub("_", " ")}: #{value.join(', ')}"
end
end
我收到此错误信息:
NoMethodError: undefined method `gsub' for :new_years:Symbol
有人能解释这个问题?在运行.gsub之前,我需要将键明确转换为字符串吗? (即使用'key.to_str.gsub ...')。当然,清洁代码解决方案也非常受欢迎。我意识到我需要大量的重构。
而且我的预期/所需的输出如下:
New Years: Party Hats, Champagne
啊,明白了。我没有意识到首先评估_entire expression_。现在做出总体感觉。谢谢澄清! – ktravers 2015-02-08 00:10:38