Desde o aparecimento da ORDA, classes, e outros objetos, é necessário trabalhar cada vez mais com valores indefinidos.
Como alguns de vocês pediram uma forma mais fácil de utilizá-los, a começar pela v20, podem comparar qualquer tipo de valor com um valor indefinido sem criar um erro.
Normalmente, em 4D, os operadores de comparação =, #, >, <, >=, e <= verificam o tipo e o valor de cada operando. Se os tipos dos dois operandos forem diferentes, a comparação lança um erro:
Como mencionado anteriormente, entendemos que ao trabalhar com classes e objetos, é necessário trabalhar com valores indefinidos, pelo que tornamos esta regra mais flexível. A partir da v20, é possível comparar valores indefinidos com todos os tipos de variáveis:
- O = comparação retorna verdadeiro quando se comparar uma variável indefinida com um valor nulo ou indefinido e falso em todas as outras formas:
$o:=new object
If ($o.undefined =10)
...
else
// retorna falso porque $o.undefined é indefinido
...
End if
- A # comparação retorna falso quando se comparar uma variável indefinida com um valor nulo ou indefinido e verdadeiro em todas as outras formas:
$o:=new object
If ($o.undefined #10)
// retorna true porque $o.undefined é indefinido
...
else
...
End if
- As comparações>, <, >= e <= retornam falsas para todas as comparações entre uma variável indefinida e um valor escalar (numérico, texto, data, hora, booleano). Como a comparação não tem qualquer significado, 4D lança um erro para os outros tipos.
$o:=new object
If ($o.undefined >10)
...
else
// retorna false porque $o.undefined é indefinido
...
End if
Consulte a documentação para mais detalhes!