Ruby Academy · Lektion

Symboler kontra strings

Hvornår De bør bruge symboler

Lektion 1 af 413 trin

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.class

Symboler 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_id

Hvorfor 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.length

Konvertere 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.upcase

Symboler 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 == b

Symboler 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).inspect

Hvornå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 greeting

Hvornå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_sym og to_s
  • :a == "a" er false

Næste emne: oprette og læse hashes.

config = { mode: :fast }
puts config[:mode]
Gratis at komme i gang

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

  1. Symboler kontra strings
  2. Oprettelse og læsning af hashes
  3. Hash-iteration
  4. Standardværdier og sammenfletning
← Tilbage til Ruby Academy