Od vzniku ORDA, tříd a dalších objektů musíte stále častěji pracovat s nedefinovanými hodnotami.
Protože se někteří z vás ptají na jednodušší způsob jejich používání, můžete od verze v20 porovnávat jakýkoli typ hodnoty s nedefinovanou hodnotou, aniž by to vyhodilo chybu.
Obvykle ve 4D porovnávací operátory =, #, >, <, >= a <= kontrolují typ a hodnotu každého operandu. Pokud se typy obou operandů liší, porovnání vyhodí chybu:
Jak jsme již zmínili, chápeme, že při práci s třídami a objekty je nutné pracovat s nedefinovanými hodnotami, proto jsme toto pravidlo zpružnili. Počínaje verzí v20 můžete porovnávat nedefinované hodnoty se všemi typy proměnných:
- Porovnání = vrací true, když porovnáváte nedefinovanou proměnnou s nulovou nebo nedefinovanou hodnotou, a false ve všech ostatních případech:
$o:=new object
If ($o.undefined =10)
...
else
// returns false because $o.undefined is undefined
...
End if
- Porovnání # vrací nepravdu, pokud porovnáváte nedefinovanou proměnnou s nulovou nebo nedefinovanou hodnotou, a nepravdu ve všech ostatních případech:
$o:=new object
If ($o.undefined #10)
// returns true because $o.undefined is undefined
...
else
...
End if
- Porovnání>, <, >= a <= vrací false při všech porovnáních mezi nedefinovanou proměnnou a skalární hodnotou (číselnou, textovou, datumovou, časovou, logickou). Protože porovnání nemá žádný význam, 4D pro ostatní typy vyhodí chybu.
$o:=new object
If ($o.undefined >10)
...
else
// returns false because $o.undefined is undefined
...
End if
Pro více informací se podívejte do dokumentace!