__copyinit__-metoden
Definiera hur din typ kopierar sig själv.
__copyinit__-metoden är en gratis lektion i Mojo 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 Mojo Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Mojo Academy innehåller totalt 4 lektioner.
Definiera hur kopiering fungerar
När ett värde kopieras anropar Mojo en särskild metod med namnet __copyinit__. Den bygger en ny instans från en befintlig. 📋
Den körs vid tilldelning
Varje gång en kopiering sker, till exempel vid vanlig tilldelning, körs __copyinit__. Det är den krok som definierar vad kopiering av Er typ innebär.
Metodsignaturen
Den tar emot den nya instansen som ska fyllas i och ett skrivskyddat existing-värde att kopiera från. Ni anger varje fält i den nya instansen.
fn __copyinit__(out self, existing: Self):
self.x = existing.xInitiera varje fält
I __copyinit__ ska Ni ge den nya instansen giltiga värden för alla dess fält, vanligtvis genom att spegla värdena från existing.
Djupa och ytliga kopior
För data på heapen avgör Ni vad som ska ske: kopiera pekaren eller allokera och klona bufferten. En riktig djup kopia ger fullständigt oberoende.
Varför oberoende är viktigt
En korrekt __copyinit__ säkerställer att kopian äger sin egen data. Då påverkar redigering av kopian aldrig originalet.
Härleds ofta automatiskt
Ni behöver sällan skriva den för hand. Genom att markera en typ som Copyable kan Mojo automatiskt generera en __copyinit__ fält för fält.
@fieldwise_init
struct Point(Copyable):
var x: IntNär Ni bör skriva den själv
Skriv __copyinit__ för hand endast när standardbeteendet är fel, till exempel när Ni hanterar en rå buffert som behöver klonas.
Den definierar kopieringssemantiken
Den här metoden är bokstavligen det som gör Er typ kopierbar. Utan den kan Mojo inte duplicera värdet vid tilldelning.
Håll den korrekt och billig
En bra __copyinit__ ska först och främst vara korrekt och därefter resurssnål. Kopiera bara det som krävs så förblir dupliceringen överkomlig.
En byggsten för säkerhet
Tillsammans med flyttningar ger __copyinit__ Mojo dess förutsägbara värdesemantik. Ni styr exakt hur data dupliceras.
Snabbkontroll
Låt oss kontrollera kopieringsinitieraren.
Sammanfattning
__copyinit__ definierar hur Er typ kopierar sig själv och bygger en oberoende instans. Mojo härleder den ofta, men Ni kan anpassa den. 🎯
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 ”__copyinit__-metoden” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Mojo Academy, inklusive ”__copyinit__-metoden”, 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 ”__copyinit__-metoden”?
Definiera hur din typ kopierar sig själv. 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 2 av 4.
Hur lång tid tar lektionen ”__copyinit__-metoden”?
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
- Kopierings- och flyttsemantik
- __copyinit__-metoden
- __moveinit__-metoden
- Destruktion och __del__