Valores nulos
Em programação de computadores, null é um valor especial para um ponteiro (ou qualquer outro tipo de referência) que indica que este ponteiro, intencionalmente, não se refere a um objeto (ponteiro nulo).
Este recurso se mostra útil para identificar quando um valor não está disponível, assumindo um valor próprio para este comportamento, o nulo ou vazio.
A palavra reservada nulo representa o valor para este comportamento, de modo que no exemplo abaixo estamos dizendo que a variável valorCusto é igual a nulo ou em outras palavras, que seu valor é vazio.
valorCusto = nulo
Um script pode receber variáveis com valores nulo, onde em certas ocasiões é necessário checar se o valor da variável é nulo ou não. Podemos realizar as checagens de duas formas:
valorCusto = nulo
// Forma 1
se (valorCusto != nulo){
imprimir ("A variável valorCusto não está nula.")
}
// Forma 2
se (valorCusto){
imprimir ("A variável valorCusto não está nula.")
}
se (!valorCusto){
imprimir ("A variável valorCusto está nula.")
}
se (valorCusto && funcionario.agenciaBancaria){
imprimir ("A variável valorCusto a a agência bancária do funcionário não estão nulas.")
}
O acesso às referências nulas gera erros durante a execução de um script. No exemplo abaixo, suponhamos que a agência bancária do funcionário esteja nula:
nomeFuncionario = funcionario.agenciaBancaria.nome
Ao tentar obter o nome de uma agência bancária nula, recebemos um erro de execução: A propriedade nome não é acessível em um elemento nulo. Para evitar este comportamento, podemos utilizar o operador de navegação segura (?):
nomeFuncionario = funcionario.agenciaBancaria?.nome
O operador deve ser utilizado em diversos níveis de uma referência, caso seja apropriado:
nomeFuncionario = funcionario.agenciaBancaria?.municipio?.nome
// valor impresso 'null'
imprimir(nomeFuncionario)
No exemplo acima, caso não utilizassemos o operador (?) no município (municipio?.nome), receberiamos um erro durante a execução, devido ao fato de que a agenciaBancária esta nula. Como resultado final o valor da variável nomeFuncionario é nula.
Em algumas ocasiões, gostariamos de considerar um valor padrão onde o resultado seria nulo. Para este propósito utilizamos a expressão ternária (?:), como podemos observar abaixo:
nomeFuncionario = funcionario.agenciaBancaria?.municipio?.nome
imprimir(nomeFuncionario?:'Sem nome')
No exemplo acima, quando o valor da variável nomeFuncionario for nulo, o valor retornado será Sem nome.
Poderíamos usar esta expressão diretamente, conforme o exemplo abaixo:
nomeFuncionario = funcionario.agenciaBancaria?.municipio?.nome?:'Sem nome'
imprimir(nomeFuncionario)