我正在嘗試遍歷散列,打印出格式化列表中的鍵和值。我的理解是字符串插值#{}會隱式地將符號轉換爲字符串。然而,當我運行下面的代碼(略有刪節):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