Symboler kontra strings
Hvornår De bør bruge symboler
Symboler kontra strings er en gratis Ruby Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Ruby Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Ruby Academy-kurset indeholder 4 lektioner i alt.
Hvad er et symbol?
Et Symbol er et letvægtsnavn, der ikke kan ændres, og som skrives med et indledende kolon, f.eks. :name. Symboler bruges ofte som identifikatorer og hash-nøgler.
status = :active
puts status
puts status.classSymboler kan ikke ændres
I modsætning til strenge kan symboler ikke ændres. Når :hello først findes, forbliver det det samme for altid.
puts :hello.frozen?
puts "hello".frozen?Samme symbol, samme objekt
Hver brug af det samme symbol peger på ét fælles objekt i hukommelsen. To ens strenge er som regel forskellige objekter.
puts :ruby.object_id == :ruby.object_id
puts "ruby".object_id == "ruby".object_idHvorfor symboler sparer hukommelse
Fordi identiske symboler deler ét objekt, er det effektivt med hensyn til hukommelse at bruge symboler som gentagne nøgler. Strenge ville oprette et nyt objekt hver gang.
ids = [:a, :a, :a]
puts ids.map(&:object_id).uniq.lengthKonvertere mellem dem
Brug to_sym til at oprette et symbol fra en streng og to_s til at gå den anden vej.
word = "color"
sym = word.to_sym
puts sym
puts sym.to_s.upcaseSymboler som hash-nøgler
Symboler er de mest almindelige hash-nøgler i Ruby, fordi de er hurtige og aldrig ændrer sig.
person = { name: "Ada", age: 36 }
puts person[:name]
puts person[:age]Den korte syntaks
Når nøglerne er symboler, er name: "Ada" en kort form af :name => "Ada". Begge opretter symbolnøgler.
a = { color: "red" }
b = { :color => "red" }
puts a == bSymboler i metodekald
Symboler angiver metoder for værktøjer som send og map(&:method). Formen &:upcase omdanner et symbol til en blok.
words = ["a", "b", "c"]
puts words.map(&:upcase).inspectHvornår skal du bruge en streng?
Brug en streng, når værdien er data, som du vil vise, opbygge eller ændre: navne, meddelelser og filindhold. Strenge har mange metoder til tekstbehandling.
greeting = "Hello"
greeting << ", world"
puts greetingHvornår skal du bruge et symbol?
Brug et symbol til faste identifikatorer: hash-nøgler, tilstande og indstillingsnavne. De viser hensigten og kan aldrig ændres ved et uheld.
def move(direction)
puts "Moving #{direction}"
end
move(:north)Sammenligne symboler og strenge
Et symbol og en streng med de samme bogstaver er ikke ens. De er forskellige typer.
puts :name == "name"
puts :name.to_s == "name"Hurtig kontrol
Vurder, hvad du ved om symboler.
Opsamling
Du kender nu forskellen:
- Symboler kan ikke ændres, deles og egner sig godt som nøgler og identifikatorer
- Strenge kan ændres og indeholder tekstdata med mange muligheder
- konvertér med
to_symogto_s :a == "a"er false
Næste emne: oprette og læse hashes.
config = { mode: :fast }
puts config[:mode]Lær Ruby med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 29
- Lektioner
- 109
Ofte stillede spørgsmål
Er lektionen “Symboler kontra strings” gratis?
Ja — alle 3 lektioner i læringssporet Ruby Academy, inklusive “Symboler kontra strings”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Ruby Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Symboler kontra strings”?
Hvornår De bør bruge symboler Du øver dig i Ruby Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Ruby Academy?
Der kræves ingen tidligere erfaring. Ruby Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “Symboler kontra strings”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Ruby Academy-lektion?
Ja. Alle Ruby Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Symboler kontra strings
- Oprettelse og læsning af hashes
- Hash-iteration
- Standardværdier og sammenfletning