Void
Quando você olha para o 'Vazio', apenas 'nulo' pode ser visto.
Tem alguém aí fora?
Uma entrada é avaliada como null
se não estiver definida no escopo atual.
Você pode comparar com null
usando igualdade ==
ou desigualdade !=
, como:
a == null # verdadeiro, se 'a' não estiver definida
0 != null # verdadeiro, porque 0 é um valor definido
Tenha em mente que você não pode declarar uma entrada sem valor no FatScript.
Embora você possa atribuir null
a uma entrada, isso causa comportamentos diferentes, dependendo se a entrada já existe no escopo e se é mutável ou não:
- Se uma entrada ainda não foi declarada, atribuir
null
não tem efeito. - Se já existe e é imutável, atribuir
null
gera um erro. - Se já existe e é mutável, atribuir
null
remove a entrada.
Declaração de exclusão
Atribuir null
a uma entrada mutável é o mesmo que excluir essa entrada do escopo. Se excluído, nada é lembrado sobre essa entrada no escopo, nem mesmo seu tipo original.
~ m = 4 # entrada de número mutável
m = null # exclui m do escopo
"valores" null são sempre mutáveis, pois na verdade nada é armazenado sobre eles e, portanto, são o único tipo de "valor" que pode fazer a transição de um estado mutável para um estado imutável quando "reatribuído"
Comparações
Você também pode usar Void
para verificar o valor de uma entrada, como:
() == Void # verdadeiro
null == Void # verdadeiro
false == Void # falso
0 == Void # falso
'' == Void # falso
[] == Void # falso
{} == Void # falso
Observe que Void
só aceita null
.
Outra forma de vazio
Nulos também podem ser expressos como parênteses vazios ()
e são efetivamente idênticos, em termos de comportamento no código:
null == null # verdadeiro
() == null # verdadeiro
() == () # verdadeiro