Mojo Academy · Lektion

Parameteriserade structs

Bygg generiska, typsäkra behållare.

Lektion 3 av 413 steg

Parameteriserade structs är en gratis lektion i Mojo Academy på CoddyKit. Detta är lektion 3 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 Mojo Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Mojo Academy innehåller totalt 4 lektioner.

Även structs tar parametrar

En parameteriserad struct tar emot värden vid kompilering inom hakparenteser, så att en definition kan bli många typsäkra, specialiserade containrar. 📦

struct Box[T: AnyType]:
    var value: T

En typparameter

T här är en typparameter. Den står för den typ du anger när du faktiskt skapar structen.

Namnge den konkreta typen

När du använder structen anger du typen inom hakparenteser, vilket omvandlar den generiska mallen till en konkret, fast typ.

var b = Box[Int](42)

Många typer, en mall

Samma mall ger dig Box[Int], Box[Float64] och fler typer, där varje typ är en separat typ som kompilatorn anpassar åt dig.

var f = Box[Float64](3.14)

Numeriska parametrar

Parametrar behöver inte vara typer. En numerisk parameter kan fastställa en storlek, till exempel längden på en array med fast kapacitet.

struct Buffer[size: Int]:
    var count: Int

Storleken är känd i förväg

När storleken är en parameter känner kompilatorn till den exakta layouten i förväg och kan ordna minnet utan några gissningar vid körning.

Metoder ser parametrarna

Inuti structen kan varje metod använda parametrarna fritt, så beteendet anpassas efter den typ eller storlek du valde.

struct Pair[T: AnyType]:
    var a: T
    var b: T

Typsäkerhet utan extra kostnad

En Box[Int] accepterar helt enkelt inte en Float. Kompilatorn upprätthåller parametern och upptäcker sammanblandningar innan programmet ens körs.

Flera parametrar

En struct kan ange flera parametrar samtidigt och kombinera typer och storlekar för att exakt beskriva den container du behöver.

struct Grid[T: AnyType, rows: Int, cols: Int]:
    var total: Int

Så här använder SIMD detta

Den inbyggda typen SIMD är själv en parameteriserad struct: både elementtypen och bredden är parametrar vid kompilering.

var v = SIMD[DType.float32, 4](1, 2, 3, 4)

Generiskt och snabbt

Parameteriserade structs ger dig Python-liknande generics utan någon överflödig kostnad, eftersom varje version specialiseras vid kompilering.

Snabbkontroll

Kom ihåg vad en parameteriserad struct kan innehålla inom sina hakparenteser.

Sammanfattning

Du byggde parameteriserade structs: hakparenteser innehåller typer eller storlekar, en mall ger många specialiserade typer och allt kontrolleras och optimeras vid kompilering. 🎯

Gratis att börja

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

Vanliga frågor

Är lektionen ”Parameteriserade structs” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Mojo Academy, inklusive ”Parameteriserade structs”, 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 Mojo Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Parameteriserade structs”?

Bygg generiska, typsäkra behållare. Ni övar på Mojo 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 Mojo Academy?

Du behöver inga förkunskaper. Utbildningen i Mojo 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 3 av 4.

Hur lång tid tar lektionen ”Parameteriserade structs”?

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

Ja. Varje Mojo 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. Parametrar jämfört med argument
  2. Parameteriserade funktioner
  3. Parameteriserade structs
  4. Varför kompileringstid ger högre hastighet
← Tillbaka till Mojo Academy