Ruby Academy · Lektion

Array- och hash-mönster

Destrukturera data.

Lektion 2 av 413 steg

Array- och hash-mönster är en gratis lektion i Ruby Academy på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Ruby Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Ruby Academy innehåller totalt 4 lektioner.

Arraymönster

Ett arraymönster matchar efter position och längd. Varje elementmönster kontrolleras mot motsvarande element.

case [1, 2, 3]
in [1, 2, 3]
  puts 'exact match'
end

Binda arrayelement

Använd identifierare för att fånga varje position i en variabel.

case [10, 20]
in [x, y]
  puts(x + y)
end

Längden spelar roll

Som standard kräver ett arraymönster exakt längd. Ett mönster med två element matchar inte en array med tre element.

case [1, 2, 3]
in [a, b]
  puts 'two'
in [a, b, c]
  puts 'three'
end

Splat för återstående element

En splat *rest fångar valfritt antal återstående element i en array, vilket gör längden flexibel.

case [1, 2, 3, 4]
in [first, *rest]
  puts(first)
  p rest
end

Splat i mitten

Splat-operatorn kan placeras mellan fasta element för att fånga början och slutet samtidigt som mitten ignoreras.

case [1, 2, 3, 4, 5]
in [first, *, last]
  puts("#{first} ... #{last}")
end

Hashmönster

Ett hashmönster matchar efter nycklar. Det kontrollerar att de angivna nycklarna finns och att deras värden matchar; extra nycklar är tillåtna.

case { name: 'Ada', age: 36 }
in { name: 'Ada' }
  puts 'found Ada'
end

Binda hashvärden

Fånga ett värde genom att ange ett bindningsnamn för nyckeln. Om bara nyckeln skrivs binds en variabel med samma namn.

case { name: 'Bob', age: 25 }
in { name: String => n, age: Integer => a }
  puts("#{n} is #{a}")
end

Förkortad nyckelbindning

Om mönstret efter en nyckel utelämnas binds automatiskt en variabel med samma namn som nyckeln.

case { city: 'Istanbul' }
in { city: }
  puts(city)
end

Kräva inga extra nycklar

Hashmönster ignorerar extra nycklar som standard. Lägg till **nil för att kräva att endast de angivna nycklarna finns.

case { a: 1 }
in { a: 1, **nil }
  puts 'exactly one key'
end

Näslade mönster

Mönster kan nästlas fritt, så att djupa strukturer kan destruktureras i en enda gren.

data = { user: { name: 'Ada', tags: ['admin', 'dev'] } }
case data
in { user: { name:, tags: [first_tag, *] } }
  puts("#{name}: #{first_tag}")
end

Matcha tolkad JSON

Mönstermatchning passar utmärkt ihop med parsade JSON- eller CSV-data och plockar ut exakt de fält som behövs.

require 'json'
resp = JSON.parse('{"status":"ok","items":[1,2,3]}', symbolize_names: true)
case resp
in { status: 'ok', items: }
  puts(items.sum)
end

Snabb kontroll

Matchar hashmönstret in { a: 1 } som standard hashen { a: 1, b: 2 }?

Sammanfattning: Array- och hashmönster

Du kan destrukturera samlingar:

  • Arraymönster matchar efter position och längd
  • *rest fångar återstående element
  • Hashmönster matchar efter nyckel och tillåter extra nycklar
  • Förkortningen { key: } binder variabler med samma namn
  • **nil förbjuder extra nycklar; mönster kan nästlas djupt
case { id: 1, items: [9, 8] }
in { items: [head, *] } then puts head
end
Gratis att börja

Lär dig Ruby med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
29
Lektioner
109

Vanliga frågor

Är lektionen ”Array- och hash-mönster” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Ruby Academy, inklusive ”Array- och hash-mönster”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Ruby Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Array- och hash-mönster”?

Destrukturera data. Ni övar på Ruby Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Ruby Academy?

Du behöver inga förkunskaper. Utbildningen i Ruby Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Array- och hash-mönster”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Ruby Academy-lektionen?

Ja. Varje Ruby Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Grunderna i case/in
  2. Array- och hash-mönster
  3. Find-mönster och guards
  4. Praktiska användningsområden
← Tillbaka till Ruby Academy