在地图中使用大写的散列键?

Use capitalized hash keys in a map?

我正在尝试创建一些示例数据:

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

我收到一个错误。

Ruby 哈希值有两种表示法。

首先是繁体表示法:

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

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

{ key: "value" }

这等同于传统的表示法 { :key => "value },这是它在 inspect 模式下的显示方式,所以如果显示方式发生变化,请不要担心,实际上是一样的。新符号强制使用符号键。

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

值得注意的是,您可以在同一定义中混合搭配:

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

Ruby 鼓励在密钥可预测且经常使用的情况下使用符号密钥。当您处理任意用户数据(例如来自表单的参数)时,它不鼓励使用符号键。在那种情况下,字符串是更好的方案。