2012-05-02 16 views
17

Staram się zrozumieć różnicę między: symbolem i tekstem: w odniesieniu do umieszczenia dwukropka. Rozumiem, że kiedy używamy: symbolu, odnosimy się do tego obiektu i cokolwiek on zawiera, gdzie jako tekst: służy do przypisania wartości do tekstu, tak jak byśmy zmienną. Czy to jest poprawne, czy ktoś może rozwinąć użycie. Dziękuję Ci.Jaka jest różnica między umieszczaniem dwukropka w: czymś i czymś:

+1

Symbol: wartość pojawia się tylko w ekspresji hash jako sposób, aby go skrócić, ale nie znaleźliśmy wiele osób faworyzować ją. – texasbruce

Odpowiedz

18

:whatever to symbol, masz tę część prawa.

Kiedy używasz skrótu, to było jak używany do określenia go w 1,8x rubin:

{:key => value, :another_key => another_value} 

ten jest znany jako składni hashrocket. W Ruby 1.9x, to zmienione na:

{key: value, another_key: another_value} 

Jest wstecznej kompatybilności, że nadal będzie ładować składnię hashrocket ... Ale, 1,9, „klucz:” jest symbolem

+2

Dzięki za tak bardzo docenione! – Tom

+2

Twoje ostatnie zdanie spowoduje zamieszanie .. Nie sądzę, że 'klucz:' jest symbolem w rubinie, ale kiedy ta składnia wchodzi w nawias klamrowy, rubin identyfikuje go jako symbol. Również składnia hashrocket nie jest dostarczana tylko dla zgodności wstecznej. W rzeczywistości, jeśli chcesz zdefiniować skrót z kluczami nie symbolicznymi, musisz polegać na składni rakietowej hash. Powiedziałbym, że nowa składnia stylu json jest bardziej syntaktycznym cukrem. – rubyprince

17

{:key => value} jest stary hash składni w Ruby, teraz mamy nowy hash składni, który jest bardziej jak json tak

{:key => value} 

jest taka sama jak

{key: value} 

starego, wszyscy jesteśmy zaznajomieni z jest:

old_hash = {:simon => "Talek", :lorem => "Ipsum"} 

To wszystko jest ładne i dandys, ale może to być prostsze i czystsze. Sprawdź Ruby 1.9 styl, to rodzaj przypomina JSON:

new_hash = {simon: "Talek", lorem: "Ipsum"} 

Ale teraz przyjrzeć się bliżej i zapytać: „Ale wcześniej klucz był symbolem wyraźnie, o co chodzi z tym teraz?”.

Cóż, masz rację, nowa notacja jest rodzajem cukru syntaktycznego dla najbardziej powszechnego stylu skrótów, tak zwanego symbolu do mieszania obiektów. Jeśli zrobisz to w IRB, zobaczysz rubin powrocie starej szkoły hash z symboli wykorzystywanych jako klawisze:

> new_hash = {simon: "Talek", lorem: "Ipsum"} 
=> {:simon=>"Talek", :lorem=>"Ipsum"} 

jeśli trzeba mieć dowolne przedmioty jak klucze hash, nadal będziesz mieć zrobić to w starej szkole.

ref: http://breakthebit.org/post/8453341914/ruby-1-9-and-the-new-hash-syntax

Powiązane problemy