在地图中使用大写哈希键?

时间:2015-01-26 18:42:08

标签: ruby hash

我试图创建一些示例数据:

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 } }

我收到错误。

1 个答案:

答案 0 :(得分:4)

Ruby哈希有两种表示法。

第一种是传统的符号:

{ :key => "value" }
{ "key" => "value" }

新的符号看起来更像JavaScript和其他:

{ key: "value" }

这相当于传统的符号{ :key => "value },它是inspect模式中显示的方式,所以不要担心如果演示文稿发生变化,实际上是同样的事情。新的表示法强制使用符号键。

如果您想使用字符串键,则需要使用传统的表示法。

值得注意的是,您可以使用相同的定义进行混合和匹配:

{ key: "value", "Key" => "value" }

Ruby鼓励在密钥可预测和频繁使用的情况下使用符号密钥。当您处理任意用户数据(例如表单中的参数)时,它会阻止符号键。在这种情况下,字符串是一个更好的计划。