在地图中使用大写的散列键?
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 鼓励在密钥可预测且经常使用的情况下使用符号密钥。当您处理任意用户数据(例如来自表单的参数)时,它不鼓励使用符号键。在那种情况下,字符串是更好的方案。
我正在尝试创建一些示例数据:
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 鼓励在密钥可预测且经常使用的情况下使用符号密钥。当您处理任意用户数据(例如来自表单的参数)时,它不鼓励使用符号键。在那种情况下,字符串是更好的方案。