Mojo Academy · Lektion

Generiske funktioner over traits

Skriv én funktion til mange typer.

Lektion 4 af 413 trin

Generiske funktioner over traits er en gratis Mojo Academy-lektion på CoddyKit. Dette er lektion 4 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 Mojo Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Mojo Academy-kurset indeholder 4 lektioner i alt.

Én funktion, mange typer

Traits' virkelige styrke er generisk kode: Skriv en funktion én gang, så fungerer den for alle typer, der opfylder traitet. 🚀

Et trait som begrænsning

Du bruger et trait som en begrænsning på en generisk parameter og lover dermed, at typen har de metoder, du kalder.

Syntaks for generiske parametre

I kantede parenteser angiver du en typeparameter og det trait, den skal opfylde, og bruger den derefter som enhver anden type.

fn announce[T: Greetable](item: T):
    print(item.greet())

Kald af trait-metoder

Inde i funktionen kan du kalde alle metoder, som traitet garanterer. Compileren ved, at greet findes på T.

Fungerer for alle typer, der opfylder traitet

Send en Dog eller en Robot til den samme funktion. Begge opfylder Greetable, så begge accepteres uden videre.

announce(Dog("Rex"))
announce(Robot())

Typesikkerheden består

Generiske typer er ikke løst definerede. Hvis en type ikke opfylder begrænsningen, afviser compileren den, før programmet kører.

Ingen køretidsstraf

Mojo specialiserer generisk kode ved kompilering og genererer en hurtig version for hver type. Fleksibilitet koster ingen hastighed.

Mindre gentagelse

Uden generiske typer skulle du kopiere en funktion for hver type. En trait-begrænsning lader én definition betjene dem alle og reducerer gentagelse.

Flere begrænsninger

En parameter kan kræve flere traits på én gang og dermed sikre, at typen har alle de egenskaber, funktionen har brug for.

Design med traits

Gode Mojo-API'er beder om det mindste trait, de har brug for. Funktionerne forbliver fleksible, samtidig med at de udtrykker præcise krav.

Det samlede billede

Trait, overensstemmelse og generiske typer kombineres: Definer en kontrakt, implementer den, og skriv derefter én genanvendelig funktion, der bruger den.

fn print_all[T: Stringable](x: T):
    print(String(x))

Hurtigt tjek

Hvorfor bruge en trait-begrænsning på en generisk funktion?

Opsummering

Generiske funktioner med en trait-begrænsning fungerer på tværs af alle typer, der opfylder traitet, samtidig med at de forbliver typesikre og hurtige. Nu kan du skrive genanvendelig Mojo-kode! 🎉

Gratis at komme i gang

Lær Mojo 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
30
Lektioner
120

Ofte stillede spørgsmål

Er lektionen “Generiske funktioner over traits” gratis?

Ja — alle 3 lektioner i læringssporet Mojo Academy, inklusive “Generiske funktioner over traits”, 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. Mojo Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Generiske funktioner over traits”?

Skriv én funktion til mange typer. Du øver dig i Mojo 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å Mojo Academy?

Der kræves ingen tidligere erfaring. Mojo 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 4 af 4.

Hvor lang tid tager lektionen “Generiske funktioner over traits”?

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 Mojo Academy-lektion?

Ja. Alle Mojo 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. Hvad er et trait?
  2. Tilpas en struct til et trait
  3. Indbyggede traits som Copyable
  4. Generiske funktioner over traits
← Tilbage til Mojo Academy