0Pricing
Mojo Academy · Lezione

Il metodo __copyinit__

Definisca il modo in cui il tipo copia se stesso.

Il metodo __copyinit__ è una lezione Mojo Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Mojo Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Mojo Academy include 4 lezioni in totale.

Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.

Defining How to Copy

When a value is copied, Mojo calls a special method named __copyinit__. It builds a fresh instance from an existing one. 📋

It Runs on Assignment

Every time a copy happens, like plain assignment, __copyinit__ fires. It is the hook that defines what copying your type means.

The Method Signature

It takes the new instance to fill and a read-only existing value to copy from. You set each field on the new one.

fn __copyinit__(out self, existing: Self):
    self.x = existing.x

Initialize Every Field

Inside __copyinit__ your job is to give the new instance valid values for all of its fields, usually mirrored from existing.

Deep vs Shallow Copies

For heap data you decide: copy the pointer, or allocate and clone the buffer. A true deep copy gives full independence.

Why Independence Matters

A correct __copyinit__ ensures the copy owns its own data. Then editing the copy never reaches back and changes the original.

Often Derived for You

You rarely write it by hand. Marking a type Copyable lets Mojo synthesize a field-by-field __copyinit__ automatically.

@fieldwise_init
struct Point(Copyable):
    var x: Int

When to Write It Yourself

Hand-write __copyinit__ only when the default is wrong, like when you manage a raw buffer that needs cloning.

It Defines Copy Semantics

This method is literally what makes your type copyable. Without it, Mojo cannot duplicate your value on assignment.

Keep It Correct and Cheap

A good __copyinit__ is correct first and lean second. Copy only what you must so duplication stays affordable.

A Building Block of Safety

Together with moves, __copyinit__ gives Mojo its predictable value semantics. You control exactly how data is duplicated.

Quick Check

Lets check the copy initializer.

Recap

__copyinit__ defines how your type copies itself, building an independent instance. Mojo often derives it, but you can customize it. 🎯

Domande Frequenti

La lezione «Il metodo __copyinit__» è gratuita?

Sì — il testo completo di «Il metodo __copyinit__» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Mojo Academy, passa a CoddyKit PRO. Il corso Mojo Academy include 4 lezioni in totale.

Cosa imparerò in «Il metodo __copyinit__»?

Definisca il modo in cui il tipo copia se stesso. Eserciti Mojo Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Mojo Academy?

Non è richiesta alcuna esperienza precedente. Mojo Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Il metodo __copyinit__»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Mojo Academy?

Sì. Ogni lezione Mojo Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Semantica di copia e spostamento
  2. Il metodo __copyinit__
  3. Il metodo __moveinit__
  4. Distruzione e __del__
← Torna a Mojo Academy