使用键,新语法中的特殊字符创建ruby哈希

时间:2013-07-15 18:15:19

标签: ruby

新的ruby语法允许:

states = {
  Oregon: 'OR',
  Florida: 'FL',
  California: 'CA',
}

我怎么能添加如下内容:

states = {
  New York: 'NY'
}

如果我尝试New\ York:'New York':

,我会收到错误消息

3 个答案:

答案 0 :(得分:9)

您无法使用该语法。这样做:

states = {
  :"New York" => "NY"
}

states = {
  "New York".to_sym => "NY"
}

答案 1 :(得分:3)

这不能用新语法完成。

遗憾的是,Ruby的形式语法没有在任何地方记录,但source code表明解析器需要tLABEL,这意味着新语法中的键必须遵循与Ruby标识符相同的规则。< / p>

答案 2 :(得分:1)

您可以按相反的顺序定义它,然后应用invert将其翻转回来:

states = {
  OR: :"Oregon",
  FL: :"Florida",
  CA: :"California",
  NY: :"New York"
}.invert

这有符号键和值,但您始终可以根据需要将值转换为字符串。

“新样式”哈希声明在您可以定义的键类型中非常有限,除非您使用更正式的样式,如:"New York" => '...'