2010-12-30 5 views
18

Secondo The Well Grounded Rubyist:Hash in Ruby

Rubino consente una speciale forma di rappresentazione simbolo nella posizione di hash-chiave, con i due punti dopo il simbolo al posto di prima e la freccia separatore di hash rimosso. In altre parole, questa:

hash = { :name => "David", :age => 49 } 

può anche essere scritta in questo modo:

hash = { name: David, age: 49 } 

Ho provato il codice precedente in Ruby 1.8.7 e 1.9.2 - Non sta funzionando. Che cosa sto facendo di sbagliato?

+8

In futuro, si prega di inviare messaggi di errore dettagliati se non si riesce a far funzionare uno snippet di codice. Questo è molto più utile di "non funziona". – meagar

+0

Grazie, stavo cercando di sapere quando utilizzare la sintassi 'jas' come' hash's, ed è apparentemente disponibile solo con 'simboli'. –

risposta

33

La nuova sintassi di hash in Ruby 1.9 richiede ancora che le stringhe siano quotate, quindi invece di David è necessario "David".

Prova questa:

hash = { name: "David", age: 49 } 

Se il libro ha usato la parola nuda David senza virgolette, è sbagliato. Potresti essere interessato a leggere alcuni degli other errata.

+1

In particolare questo: http://www.manning-sandbox.com/thread.jspa?threadID=33960&tstart=0 –

+0

Ruby tratta il nome: come simbolo, ad esempio: nome? – loungerdork

+2

@loungerdork Sì. È esattamente equivalente a '{: name =>" David "}' – meagar