2015-01-03 7 views
6

In ruby ​​2.2.0 è possibile scrivere gli hash come questo:nuovo modo di creare hash in Ruby 2.2.0

hash = { 'new_possible_style': :of_hashes } 
hash[:new_possible_style] #=> :of_hashes 
hash['new_possible_style'] #=> nil 

non può realizzare la ragione per l'attuazione di questo stile. Se ho bisogno di stringhe come chiave (ad esempio, per alcune librerie di terze parti), devo ancora usare l'hash vecchio stile. Quali sono i casi d'uso per questa 'caratteristica'? Perché gli sviluppatori di core hanno aggiunto questo stile?

Grazie in anticipo.

risposta

10

Questo non è un nuovo stile di rappresentazione hash, ma un'estensione dello stile esistente aggiunto in 1,9 in modo coerente.

In 1.9, si può fare questo

hash = { symbol_key: 'value' } 

ed è anche possibile definire Symbol s con i caratteri altrimenti-ristrette utilizzando la sintassi simile a questo:

sym = :'a-symbol-with-dashes' 

Tuttavia nelle versioni 1,9 a 2,1, il codice

hash = { 'a-symbol-with-dashes': 'value' } 

non è riconosciuto come sintassi valida, invece si ottiene l'eccezione SyntaxError: (irb):4: syntax error, unexpected ':', expecting =>

Aggiunta del supporto per il confezionamento citato intorno al Symbol nella sintassi hash è più probabile per la coerenza. Le opzioni quando si scrive un letterale Symbol con la sintassi della chiave hash breve ora sono le stesse di quando si scrive lo stesso letterale al di fuori dell'hash (diverso da dove si inseriscono i due punti)

+0

Grazie per la grande risposta! –