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 の正式な文法はどこにも文書化されていませんが、ソース コードは、パーサーが を期待していることを示してい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 に答える