Find-mønstre og guards
Betingelser i matches
Find-mønstre og guards er en gratis leksjon i Ruby Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Ruby Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Ruby Academy inneholder totalt 4 leksjoner.
Guard-betingelser
Legg til en if- eller unless-guard i et mønster. Grenen matcher bare når både mønsteret og betingelsen lykkes.
case 7
in Integer => n if n.odd?
puts 'odd integer'
endGuard-betingelser bruker bundne variabler
Guard-betingelsen kan referere til variabler som mønsteret har bundet, slik at De kan uttrykke avanserte betingelser for de matchede dataene.
case [4, 9]
in [a, b] if a < b
puts 'ascending pair'
endunless-guard-betingelser
En unless-guard matcher når betingelsen er usann, altså det motsatte av if.
case 0
in Integer => n unless n.positive?
puts 'zero or negative'
endFlere grener med guard-betingelser
Kombiner guard-betingelser på tvers av grener for å bygge en tydelig beslutningsstige.
def grade(score)
case score
in Integer => s if s >= 90 then 'A'
in Integer => s if s >= 70 then 'B'
else 'C'
end
end
puts(grade(85))Find-mønstre
Et find-mønster [*, x, *] søker gjennom en array etter et delmønster hvor som helst i den, med splats i begge ender.
case [1, 2, 3, 4]
in [*, 3, *]
puts 'contains a 3'
endBinde inne i et find-mønster
Det matchede elementet i et find-mønster kan bindes, slik at den funne verdien fanges.
case [10, 20, 30]
in [*, x, *] if x > 25
puts("found #{x}")
endFange omgivelsene
Begge splatene i et find-mønster kan gis navn for å fange elementene før og etter treffet.
case [1, 2, 99, 4, 5]
in [*before, 99, *after]
p before
p after
endFinne et element av en bestemt type
Find-mønstre kan kombineres med typemønstre for å finne det første elementet av en bestemt type.
case [1, 'hi', 2]
in [*, String => word, *]
puts(word)
endGuard-betingelser kontra mønstre
Uttrykk det De kan strukturelt i mønsteret, og bruk guard-betingelser bare for betingelser som mønstre ikke kan uttrykke (for eksempel numeriske sammenligninger eller metodekall).
case { role: 'admin', age: 40 }
in { role: 'admin', age: } if age >= 18
puts 'adult admin'
endKombinere find-mønster og guard-betingelse
Find-mønstre og guard-betingelser gjør det sammen mulig å spørre: oppfyller et eller annet element denne betingelsen?
numbers = [3, 5, 8, 11]
case numbers
in [*, n, *] if n.even?
puts("first even-ish hit: #{n}")
endRekkefølgen på grenene
Grenene prøves ovenfra og ned; det første treffet vinner. Plasser mer spesifikke mønstre med guard-betingelser før de generelle.
case 100
in Integer => n if n > 50 then puts 'big'
in Integer then puts 'small'
endKort sjekk
Hva gjør find-mønsteret [*, x, *]?
Oppsummering: Find-mønstre og guard-betingelser
De har lagt til betingelser og søk i matchingen:
- Guard-betingelser med
if/unlessfinjusterer et mønster - Guard-betingelser kan bruke bundne variabler
- Find-mønstre
[*, x, *]søker hvor som helst - Begge splatene kan gis navn for å fange omgivelsene
- Den første matchende grenen vinner, så rekkefølgen er viktig
case [1, 7, 3]
in [*, x, *] if x > 5 then puts x
endLær deg Ruby med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 29
- Leksjoner
- 109
Ofte stilte spørsmål
Er leksjonen «Find-mønstre og guards» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Ruby Academy, inkludert «Find-mønstre og guards», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Ruby Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Find-mønstre og guards»?
Betingelser i matches Du øver på Ruby Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Ruby Academy?
Ingen tidligere erfaring er nødvendig. Ruby Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Find-mønstre og guards»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Ruby Academy-leksjonen?
Ja. Alle Ruby Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Grunnleggende case/in
- Array- og hash-mønstre
- Find-mønstre og guards
- Praktiske bruksområder