2010-12-30 16 views
18

Według Studnia uziemione Rubyist:Hash składni w Ruby

Ruby pozwala szczególną formę reprezentacji symbolu w pozycji hash-klucz, z dwukropkiem po symbolu zamiast przed nim i strzałki separatora hash oddalony. Innymi słowy, to:

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

mogą być napisane tak:

hash = { name: David, age: 49 } 

Próbowałem powyższy kod w Ruby 1.8.7 i 1.9.2 - To nie działa. Co ja robię źle?

+8

W przyszłości należy publikować szczegółowe komunikaty o błędach, jeśli nie można utworzyć kodu. Jest to o wiele bardziej przydatne niż "nie działa". – meagar

+0

Dzięki, próbowałem wiedzieć, kiedy użyć składni 'hash's' json-like' i jest ona widocznie dostępna tylko z 'symbolami'. –

Odpowiedz

33

Nowa składnia skrótu w Ruby 1.9 nadal wymaga cytowania łańcuchów, więc zamiast David potrzebujesz "David".

Spróbuj tego:

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

Jeśli książka używana gołe słowo David bez cudzysłowu, to jest w błędzie. Możesz być zainteresowany przeczytaniem niektórych z other errata.

+1

W szczególności ten: http://www.manning-sandbox.com/thread.jspa?threadID=33960&tstart=0 –

+0

Czy nazwa traktuje Ruby: jako symbol, tj .: name? – loungerdork

+2

@loungerdork Tak. Jest to dokładnie równoważne '{: name =>" David "}' – meagar