Generiske funksjoner over traits
Skriv én funksjon for mange typer.
Generiske funksjoner over traits er en gratis leksjon i Mojo Academy på CoddyKit. Dette er leksjon 4 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 Mojo Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Mojo Academy inneholder totalt 4 leksjoner.
Én funksjon, mange typer
Den virkelige kraften i trait er generisk kode: Skriv en funksjon én gang, så fungerer den for alle typer som oppfyller traitet. 🚀
Et trait som en begrensning
Du bruker et trait som en begrensning på en generisk parameter, og lover dermed at typen har metodene du kaller.
Syntaks for generiske parametere
Inne i hakeparenteser angir du en typeparameter og traitet den må oppfylle, og bruker den deretter som enhver annen type.
fn announce[T: Greetable](item: T):
print(item.greet())Kalle trait-metoder
Inne i funksjonen kan du kalle alle metoder som traitet garanterer. Kompilatoren vet at greet finnes på T.
Fungerer for alle typer som oppfyller kravene
Send en Dog eller en Robot til den samme funksjonen. Begge oppfyller Greetable, så begge godtas uten problemer.
announce(Dog("Rex"))
announce(Robot())Typesikkerheten består
Generiske typer er ikke løse. Hvis en type ikke oppfyller begrensningen, avviser kompilatoren den før programmet kjører.
Ingen kjøretidskostnad
Mojo spesialiserer generisk kode ved kompilering og genererer en rask versjon for hver type. Fleksibilitet koster ingen hastighet.
Mindre duplisering
Uten generiske typer måtte du kopiert en funksjon for hver type. En trait-begrensning lar én definisjon betjene alle, og reduserer duplisering.
Flere begrensninger
En parameter kan kreve flere trait samtidig, slik at typen har alle egenskapene funksjonen trenger.
Utforme rundt trait
Gode Mojo-API-er ber om det minste traitet de trenger. Funksjonene forblir fleksible, samtidig som de uttrykker nøyaktige krav.
Hele bildet
Trait, samsvar og generiske typer kombineres: Definer en kontrakt, implementer den, og skriv deretter én gjenbrukbar funksjon basert på den.
fn print_all[T: Stringable](x: T):
print(String(x))Rask kontroll
Hvorfor bruke en trait-begrensning på en generisk funksjon?
Oppsummering
Generiske funksjoner med en trait-begrensning fungerer på tvers av alle typer som oppfyller kravene, samtidig som de er typesikre og raske. Nå skriver du gjenbrukbar Mojo-kode! 🎉
Lær deg Mojo 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
- 30
- Leksjoner
- 120
Ofte stilte spørsmål
Er leksjonen «Generiske funksjoner over traits» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Mojo Academy, inkludert «Generiske funksjoner over traits», 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 Mojo Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Generiske funksjoner over traits»?
Skriv én funksjon for mange typer. Du øver på Mojo 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 Mojo Academy?
Ingen tidligere erfaring er nødvendig. Mojo 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 4 av 4.
Hvor lang tid tar leksjonen «Generiske funksjoner over traits»?
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 Mojo Academy-leksjonen?
Ja. Alle Mojo 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
- Hva er en trait?
- Tilpasse en struct til en trait
- Innebygde traits som Copyable
- Generiske funksjoner over traits