Desde la aparición de ORDA, las clases y otros objetos, hay que trabajar cada vez más con valores indefinidos.
Ya que algunos de ustedes piden una forma más fácil de utilizarlos, a partir de v20, puede comparar cualquier tipo de valor con un valor indefinido sin lanzar un error.
Normalmente, en 4D, los operadores de comparación =, #, >, <, >= y <= comprueban el tipo y el valor de cada operando. Si los tipos de los dos operandos son diferentes, la comparación arroja un error:
Como ya hemos mencionado, entendemos que cuando se trabaja con clases y objetos, se debe trabajar con valores indefinidos, por lo que hemos flexibilizado esta regla. A partir de la versión 20, puede comparar valores indefinidos con todos los tipos de variables:
- La comparación = devuelve un resultado verdadero cuando se compara una variable indefinida con un valor nulo o indefinido y falso en todas las demás formas:
$o:=new object
If ($o.undefined =10)
...
else
// devuelve false porque $o.undefined es indefinido
...
End if
- La comparación # devuelve falso cuando se compara una variable indefinida con un valor nulo o indefinido y falso en todas las demás formas:
$o:=new object
If ($o.undefined #10)
// devuelve true porque $o.undefined es indefinido
...
else
...
End if
- Las comparaciones>, <, >= y <= devuelven false para todas las comparaciones entre una variable indefinida y un valor escalar (numérico, texto, fecha, hora, booleano). Como la comparación no tiene sentido, 4D lanza un error para los otros tipos.
$o:=new object
If ($o.undefined >10)
...
else
// devuelve false porque $o.undefined es indefinido
...
End if
Consulte la documentación para más detalles.