Počínaje verzí 4D v20 R3 se můžete rozloučit s dobou, kdy jste pro deklarace a přiřazení proměnných museli psát několik řádků kódu. Nyní můžete snadno zefektivnit svůj kód, odstranit nadbytečnost a zvýšit efektivitu.
Zde je návod, jak na to!
Dosud jsme mohli psát:
var <variableName> : <type>
Tuto syntaxi jsme vylepšili tak, abyste mohli proměnnou deklarovat a inicializovat na jediném řádku.
odvozený typ
var <variableName> := <value>
Zde je typ vynechán a bude určen překladačem nebo interpretem na základě zadané hodnoty. Tento přístup je vhodné používat výhradně u skalárních typů pocházejících z hodnot, příkazů nebo metod, aby se předešlo chybám při kompilaci.
Příklad:
//BLOB
var $vxBlob : Blob
INTEGER TO BLOB(0x0206; $vxBlob; Native byte ordering)
var $blob:=$vxBlob
//Boolean
var $bool:=True
//Null
var $null:=Null
//Real
var $num:=(569/2)
//Object
var $obj:={att1: 1}
//Pointer
var $point:=->$obj
//Text
var $text:="Hello"
//Collection
var $col:=[1; 2; 3]
//Date
var $date:=Current date
//Time
var $time:=Current time
//Picture
var $pict : Picture
var $image:=$pict
Při použití tohoto stylu zápisu nezapomeňte, že 4D se snaží odvodit nejobecnější typ. Například když je proměnná inicializována hodnotou 10, 4D použije typ Real, a nikoliv Integer. To vám umožní používat tuto proměnnou s jakýmkoli typem výpočtu. Pokud chcete použít typ Integer, musíte explicitně deklarovat typ proměnné.
Deklarovaný typ a inicializace
var <variableName> : <type> := <value>
Zde je proměnná vytvořena s daným typem a poté inicializována hodnotou.
Tento typ deklarace je nutné použít, pokud inicializujete proměnnou se složitým typem, jako je atribut třídy, meziprocesová proměnná nebo globální proměnná. Pokud v těchto případech typ neuvedete, interpret vyhodnotí výraz a typ odvodí, zatímco překladač typ odvodit nedokáže a místo toho použije variantní typ. Například:
var $myClass:={myAttribute: "Hello there!"}
var $myAttribute:=$myClass.myAttribute
// The interpreter knows the type of $myClass.myAttribute: $myAttribute is a declared as Text
// The compiler doesn't know the type of $myClass.myAttribute: $myAttribute is a declared as variant
Ponořte se tedy do dokumentace, prozkoumejte nekonečné možnosti, které tato funkce nabízí, a na vlastní kůži se přesvědčte, jak tento převratný doplněk ovlivní budoucnost vašich programátorských snah.