3

新的 ruby​​ 语法允许:

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

我怎么能添加类似的东西:

states = {
  New York: 'NY'
}

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

4

3 回答 3

9

您不能使用该语法。做这个:

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

或者

states = {
  "New York".to_sym => "NY"
}
于 2013-07-15T18:19:00.257 回答
3

这不能在新语法中完成。

不幸的是,Ruby 的形式语法在任何地方都没有记录,但是源代码显示解析器需要 a tLABEL,这意味着新语法中的键必须遵循与 Ruby 标识符相同的规则。

于 2013-07-15T18:28:42.300 回答
1

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

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

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

除非您使用更正式的样式,例如:"New York" => '...'.

于 2013-07-15T18:33:57.433 回答