我试图创建一些示例数据:
1.upto(19).map {|n| { Keyword: "some-term-#{n}", TotalSearches: n } }
但是返回的数据的哈希键略有不同:
[{:Keyword=>"some-term-1", :TotalSearches=>1}, ...
如何强制它使用我指定的哈希键,比如这个?
[{"Keyword"=>"some-term-1", "TotalSearches"=>1}, ...
如果我在哈希键周围加上引号:
1.upto(19).map {|n| { "Keyword": "some-term-#{n}", "TotalSearches": n } }
我收到错误。
答案 0 :(得分:4)
Ruby哈希有两种表示法。
第一种是传统的符号:
{ :key => "value" }
{ "key" => "value" }
新的符号看起来更像JavaScript和其他:
{ key: "value" }
这相当于传统的符号{ :key => "value }
,它是inspect
模式中显示的方式,所以不要担心如果演示文稿发生变化,实际上是同样的事情。新的表示法强制使用符号键。
如果您想使用字符串键,则需要使用传统的表示法。
值得注意的是,您可以使用相同的定义进行混合和匹配:
{ key: "value", "Key" => "value" }
Ruby鼓励在密钥可预测和频繁使用的情况下使用符号密钥。当您处理任意用户数据(例如表单中的参数)时,它会阻止符号键。在这种情况下,字符串是一个更好的计划。