Dalla comparsa di ORDA, classi e altri oggetti, si deve lavorare sempre più spesso con i valori indefiniti.
Poiché alcuni di voi chiedono un modo più semplice per usarli, a partire dalla versione 20, è possibile confrontare qualsiasi tipo di valore con un valore non definito senza che venga lanciato un errore.
Di solito, in 4D, gli operatori di confronto =, #, >, <, >= e <= controllano il tipo e il valore di ciascun operando. Se i tipi dei due operandi sono diversi, il confronto genera un errore:
Come già detto, sappiamo che quando si lavora con classi e oggetti è necessario lavorare con valori non definiti, quindi abbiamo reso questa regola più flessibile. A partire dalla versione v20, è possibile confrontare valori indefiniti con tutti i tipi di variabili:
- Il confronto = restituisce true quando si confronta una variabile undefined con un valore null o undefined e false in tutti gli altri modi:
$o:=new object
If ($o.undefined =10)
...
else
// returns false because $o.undefined is undefined
...
End if
- Il confronto # restituisce falso quando si confronta una variabile non definita con un valore nullo o non definito e falso in tutti gli altri modi:
$o:=new object
If ($o.undefined #10)
// returns true because $o.undefined is undefined
...
else
...
End if
- I confronti>, <, >= e <= restituiscono false per tutti i confronti tra una variabile non definita e un valore scalare (numerico, testo, data, ora, booleano). Poiché il confronto non ha significato, 4D lancia un errore per gli altri tipi.
$o:=new object
If ($o.undefined >10)
...
else
// returns false because $o.undefined is undefined
...
End if
Consultate la documentazione per maggiori dettagli!