Zig Academy · Lezione

Funzioni che accettano un tipo

Usare generics tramite parametri comptime T

Lezione 1 di 413 passaggi

Funzioni che accettano un tipo è una lezione Zig Academy gratuita su CoddyKit. Questa è la lezione 1 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 Zig Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Zig Academy include 4 lezioni in totale.

I generics secondo Zig

Zig non ha una sintassi separata per i generics. Una funzione può invece accettare un tipo come uno dei propri parametri e usarlo come qualsiasi altro valore. ✨

Un parametro di tipo è comptime

Poiché un tipo deve essere noto quando il codice viene compilato, il parametro di tipo è sempre contrassegnato come comptime. Il chiamante passa un tipo reale.

fn first(comptime T: type, items: []const T) T {
    return items[0];
}

type è un tipo reale

In Zig la parola type è a sua volta un tipo, quindi un parametro può essere dichiarato come type per indicare un tipo qualsiasi.

comptime T: type

Usare T nella firma

Una volta assegnato al tipo il nome T, è possibile usarlo per i parametri successivi e per il tipo restituito, collegandoli tutti tra loro.

fn max(comptime T: type, a: T, b: T) T {
    return if (a > b) a else b;
}

Chiamare una funzione generica

Per chiamarla, passi prima il tipo concreto e poi gli argomenti normali. Qui chiediamo il maggiore tra due valori i32.

const m = max(i32, 3, 9);

Una funzione, molti tipi

La stessa funzione funziona per qualsiasi tipo che supporti le operazioni utilizzate. Sostituisca i32 con f64 e il codice continuerà a funzionare.

const f = max(f64, 1.5, 2.5);

Zig specializza ogni chiamata

Per ogni tipo distinto passato, Zig genera una copia dedicata della funzione. Questo processo si chiama monomorphization e avviene in fase di compilazione.

Il corpo rimane generico

Il tipo viene scritto esplicitamente nella chiamata, ma il corpo rimane generico. Zig verifica che le operazioni utilizzate siano valide per qualsiasi T ricevuto.

type evita il boxing nascosto

Passare un type reale è diverso dal polimorfismo a runtime: non ci sono vtable né boxing, ma solo una copia concreta scelta al momento della compilazione.

Gli errori emergono in fase di compilazione

Se si chiama max con un tipo che non dispone dell'operatore maggiore di, Zig segnala il problema quando costruisce quella specializzazione, non a runtime.

I parametri di tipo vengono prima

Per convenzione, il parametro di tipo comptime viene elencato prima dei parametri valore, così il tipo è noto prima di descrivere i dati.

fn clone(comptime T: type, value: T) T {
    return value;
}

Verifica rapida

Vuole una funzione che funzioni con molti tipi in Zig. Come dichiara il parametro di tipo?

Riepilogo

Passi un parametro comptime T: type per rendere generica una funzione. Zig costruisce una versione specializzata per ogni tipo effettivamente utilizzato. 🎯

Gratis per iniziare

Impara Zig con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
30
Lezioni
120

Domande Frequenti

La lezione «Funzioni che accettano un tipo» è gratuita?

Sì — il testo completo di «Funzioni che accettano un tipo» è 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 Zig Academy, passa a CoddyKit PRO. Il corso Zig Academy include 4 lezioni in totale.

Cosa imparerò in «Funzioni che accettano un tipo»?

Usare generics tramite parametri comptime T Eserciti Zig 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 Zig Academy?

Non è richiesta alcuna esperienza precedente. Zig 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 1 di 4.

Quanto tempo richiede la lezione «Funzioni che accettano un tipo»?

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 Zig Academy?

Sì. Ogni lezione Zig 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. Funzioni che accettano un tipo
  2. Strutture dati generiche
  3. @TypeOf e riflessione sui tipi
  4. Parametri anytype
← Torna a Zig Academy