Articles

RubyLearning.com

<Ranges | TOC | Hashes>

en symbol ser ut som ett variabelnamn men det är prefixet med ett kolon. Exempel -: åtgärd,: line_items. Du behöver inte förklara en symbol och de är garanterade att vara unika. Det finns ingen anledning att tilldela någon form av värde till en symbol – Ruby tar hand om det åt dig. Ruby garanterar också att oavsett var det visas i ditt program, kommer en viss symbol att ha samma värde.

Alternativt kan du betrakta kolon för att betyda” sak som heter ”så :id är” den sak som heter id.”Du kan också tänka på :id som betyder namnet på variabeln id och vanligt id som betyder värdet på variabeln.

en Symbol är det mest grundläggande Rubinobjektet du kan skapa. Det är bara ett namn och ett internt ID. Symboler är användbara eftersom ett visst symbolnamn hänvisar till samma objekt i ett Ruby-program. Symboler är effektivare än strängar. Två strängar med samma innehåll är två olika objekt, men för ett visst namn finns det bara ett Symbolobjekt. Detta kan spara både tid och minne.

se exemplet: p039symbol.rb under

utgången när jag körde programmet på min dator var:

När använder vi därför en sträng mot en symbol?

  • Om innehållet (sekvensen av tecken) för objektet är viktigt, använd en sträng
  • om objektets identitet är viktig, använd en symbol

Ruby använder symboler och upprätthåller en Symboltabell för att hålla dem. Symboler är namn – namn på instansvariabler, namn på metoder, namn på klasser. Så om det finns en metod som heter control_movie, finns det automatiskt en symbol: control_movie. Ruby tolkas, så det håller sitt symbolbord praktiskt hela tiden. Du kan ta reda på vad som finns på det när som helst genom att ringa Symbol.all_symbols.
ett Symbolobjekt skapas genom att prefixa en operator, sträng, variabel, konstant, metod, klass, modulnamn med ett kolon. Symbolobjektet kommer att vara unikt för varje annat namn men hänvisar inte till en viss instans av namnet under hela programmets körning. Således, om Fred är en konstant i ett sammanhang, en metod i en annan och en klass i en tredjedel, symbolen :Fred kommer att vara samma objekt i alla tre sammanhang.

detta kan illustreras med detta enkla program – p039xsymbol.RB:

utgången när jag körde programmet på min dator var:

Här är ett annat exempel – p039xysymbol.RB:

utgången är:

i det här exemplet är: ja en symbol. Symboler innehåller inte värden eller objekt, som variabler gör. Istället används de som ett konsekvent namn inom kod. Till exempel i föregående kod kan du enkelt ersätta symbolen med en sträng, som i exempel – p039xyzsymbol.rb

detta ger samma resultat, men är inte lika effektivt. I det här exemplet skapar varje omnämnande av ’ja’ ett nytt objekt som lagras separat i minnet, medan symboler är enstaka referensvärden som bara initieras en gång. I det första kodexemplet finns bara :Ja, Medan i det andra exemplet slutar du med de fulla strängarna ’ja’ och ’ja’ som tar upp minnet.

Vi kan också omvandla en sträng till en Symbol och vice versa:

symboler är särskilt användbara när du skapar hashar och du vill skilja mellan nycklar och värden. Se Använda symboler som Hash nycklar för ett praktiskt exempel.

Fabio Akita en brasiliansk Rails entusiast, även känd på nätet som ”AkitaOnRails”, skrev denna exklusiva artikel om Ruby symboler för rubylearning.com medlemmar som du. Läs artikeln efter att du har gått igenom den här lektionen.

Obs: Ruby-logotypen är Copyright (c) 2006, Yukihiro Matsumoto. Jag har gjort omfattande hänvisningar till information, relaterad till Ruby, tillgänglig i det offentliga området (wikis och bloggar, artiklar av olika Ruby Gurus), mitt erkännande och tack till dem alla. Mycket av materialet på rubylearning.com och i kursen på rubylearning.org hämtas främst från programmeringen Ruby book, tillgänglig från Pragmatic Bookshelf.

<intervall / TOC / Hashes>