null versus undefined
Conheça dois tipos diferentes de ausência.
null versus undefined é uma aula grátis de Zig Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Zig Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Zig Academy inclui 4 aulas no total.
Duas palavras, dois significados
Zig tem tanto null quanto undefined, e eles não são iguais. Confundi-los é uma fonte clássica de erros difíceis de entender.
null significa ausência de valor
null é um estado real e definido: indica que este opcional intencionalmente não contém nada. É um valor significativo que pode ser verificado.
const x: ?i32 = null;undefined significa não especificado
undefined significa que o espaço de armazenamento existe, mas seu conteúdo é lixo. Você promete escrever um valor real antes de lê-lo.
var buf: [4]u8 = undefined;Somente opcionais contêm null
Você só pode atribuir null a tipos opcionais. Um i32 simples nunca o aceitará, pois a ausência não faz parte do seu tipo.
Qualquer tipo pode ser undefined
Por outro lado, quase qualquer variável pode começar como undefined para reservar memória agora e preenchê-la pouco depois.
var total: i32 = undefined;Ler null é permitido
Verificar se um opcional é igual a null é perfeitamente seguro e esperado; é exatamente assim que você detecta um valor ausente.
Ler undefined é um erro
Ler um valor que ainda é undefined é um comportamento ilegal. Compilações seguras chegam a preenchê-lo com bytes 0xAA para revelar o erro.
Uma promessa para você mesmo
Veja undefined como um contrato: você se compromete a atribuir um valor antes de usá-lo. Se quebrar esse compromisso, lerá dados sem sentido e imprevisíveis.
Padrão comum para buffers
Um padrão frequente é declarar um buffer como undefined e depois preenchê-lo imediatamente a partir de uma leitura ou chamada de formatação.
var line: [256]u8 = undefined;Escolha a ferramenta certa
Use null para modelar uma opcionalidade genuína. Use undefined apenas para evitar uma inicialização redundante que será substituída imediatamente.
Perguntas completamente diferentes
null responde se há um valor, enquanto undefined responde se a memória já foi escrita. Mantê-los separados mantém você seguro.
Verificação rápida
Você declara var buf: [8]u8 = undefined; e lê buf[0] antes de escrevê-lo. O que isso representa?
Recapitulação
Você distinguiu null (um valor ausente real para opcionais) de undefined (memória não inicializada que deve ser escrita primeiro). Duas ideias que nunca devem ser confundidas. 🧠
Perguntas Frequentes
A aula “null versus undefined” é grátis?
Sim — o texto completo de “null versus undefined” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Zig Academy, atualize para CoddyKit PRO. O curso de Zig Academy inclui 4 aulas no total.
O que vou aprender em “null versus undefined”?
Conheça dois tipos diferentes de ausência. Você pratica Zig Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Zig Academy?
Nenhuma experiência prévia é necessária. Zig Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “null versus undefined”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Zig Academy?
Sim. Cada aula de Zig Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Declarando tipos opcionais
- Desempacotando com segurança com if e orelse
- Ponteiros opcionais e ?*T
- null versus undefined