Unioni taggate e switch
Eseguire il pattern matching sulle varianti dell'unione
Unioni taggate e switch è una lezione Zig Academy gratuita su CoddyKit. Questa è la lezione 3 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.
Memorizzare la variante
Una union semplice dimentica quale campo sia attivo. Una union con tag associa il valore a un tag enum che registra la variante corrente.
Dichiarazione di una union con tag
Si scrive union(enum) per consentire a Zig di generare automaticamente un tag corrispondente, con un nome di tag per ogni campo.
const Value = union(enum) { int: i64, text: []const u8 };Il tag tiene traccia del campo
Ora il valore contiene il proprio tag, ad esempio .int o .text. La union sa sempre quale variante contiene al momento.
var v = Value{ .int = 7 };Gestire le varianti con switch
Usi switch su una union con tag per diramare il codice in base alla variante. Ogni caso nomina un tag e gestisce quella forma del valore.
switch (v) { .int => {}, .text => {} }Acquisire il payload
Aggiunga un'acquisizione tra barre verticali per estrarre il valore interno del campo attivo, pronto per essere usato all'interno di quel ramo.
switch (v) { .int => |n| useInt(n), .text => |s| useText(s) }La completezza è verificata
Zig richiede che ogni variante venga gestita. Se dimentica un caso, il compilatore si ferma, così non ne salta mai uno senza avvisare.
Il ramo else
Quando vuole gestire il resto in un unico punto, aggiunga un ramo else per coprire tutte le varianti non elencate esplicitamente.
switch (v) { .int => |n| useInt(n), else => {} }switch è un'espressione
Uno switch può produrre un valore, quindi ogni ramo restituisce qualcosa. Può assegnare l'intero switch a una variabile in un solo passaggio.
const kind = switch (v) { .int => 1, .text => 2 };Modificare tramite un'acquisizione
Acquisisca tramite puntatore con |*field| quando vuole modificare il payload sul posto invece di copiarlo fuori dalla union.
switch (v) { .int => |*n| n.* += 1, else => {} }Un tipo somma sicuro per tipo
Le union con tag sono i tipi somma sicuri di Zig: un valore, molte forme e uno switch di cui il compilatore dimostra la gestione completa.
Perfette per parser e stati
Questo schema si adatta perfettamente a token, nodi AST e macchine a stati: modelli ogni caso una volta sola e lasci che switch instradi la logica.
Verifica rapida
Che cosa si ottiene scrivendo union(enum) rispetto a una union semplice?
Riepilogo
Ha conosciuto le union con tag: union(enum) tiene traccia della variante attiva. Usi switch per gestirla, acquisisca i payload con le barre e il compilatore verificherà ogni caso. 🧩
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 «Unioni taggate e switch» è gratuita?
Sì — il testo completo di «Unioni taggate e switch» è 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 «Unioni taggate e switch»?
Eseguire il pattern matching sulle varianti dell'unione 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 3 di 4.
Quanto tempo richiede la lezione «Unioni taggate e switch»?
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
- Enum per un insieme fisso di valori
- Unioni che contengono uno tra molti tipi
- Unioni taggate e switch
- Metodi degli enum e interi sottostanti