Přemýšleli jste někdy o funkci automatického dokončování v systému 4D nebo jste se ptali, proč systém 4D navrhuje všechny funkce použité v kódu? Protože objekt je velmi obecný typ, 4D ví pouze to, co skutečně ukládá za běhu. To vám však při psaní kódu příliš nepomůže.
4D nyní nabízí novou, alternativní syntaxi, která výrazně zlepší automatické doplňování při deklaraci proměnných.
Nová syntaxe je velmi jednoduchá a skládá se z klíčového slova „var“, názvu proměnné a jejího typu.
var <variableName> : <type>
Proměnné můžete deklarovat jak klasickou, tak novou syntaxí ve stejné databázi.
Pro datové typy
Tuto syntaxi lze použít k definici datových typů proměnných. Následuje několik příkladů ukazujících shodu obou syntaxí pro proměnné textových, číselných a obrázkových datových typů.
Předchozí syntaxe
C_TEXT($text1;$text2)
C_LONGINT ($num)
C_PICTURE (
$pict)
Nová syntaxe
var $text1; $text2: Text
var $num : Integer
var $pict : Picture
Pro uživatelské třídy
Myšlenka tříd byla zavedena ve verzi 4D v18 R3. Pokud jste tak ještě neučinili, měli byste si přečíst tento příspěvek na blogu.
Dosud byly všechny instance třídy deklarovány jako objekt. Nyní, s novou syntaxí, můžete pomocí příkazu cs a názvu třídy definovat, ke které instanci třídy váš objekt patří. Tím získáte přístup k funkcím a atributům třídy.
Předchozí syntaxe
C_OBJECT($person)
$person :=cs.Person.new()
Nová syntaxe
var $person : cs.Person
$person :=cs.Person.new()
Pro třídy 4D
Objekty jako File nebo Folder jsou objekty patřící do interních tříd 4D. Můžete k nim přistupovat pomocí příkazu 4D.
Předchozí syntaxe
C_OBJECT($folder)
$folder :=Folder(Current resource folder)
Nová syntaxe
var $folder : 4D.Folder
$folder :=Folder(Current resources folder)
Jak je to s ORDA?
V předchozím příspěvku na blogu jsme si ukázali, že třídy ORDA (Dataclass, Entity a Entity selection) můžete přepsat vlastními třídami. Pomocí této nové syntaxe můžete také využívat automatické doplňování.
Předchozí syntaxe
C_OBJECT($dataclass)
C_OBJECT ($entity)
C_OBJECT (
$entitySelection).
Nová syntaxe
var $dataclass : cs.Company
var $entity : cs.CompanyEntity
var $entitySelection : cs.CompanySelection