Vi siete mai chiesti cosa sia la funzione di autocompletamento di 4D o perché 4D suggerisca tutte le funzioni utilizzate nel codice? Poiché un oggetto è un tipo molto generico, 4D sa solo cosa sta memorizzando in fase di esecuzione. Tuttavia, questo non è di grande aiuto quando si scrive il codice.
4D offre ora una nuova sintassi alternativa che migliora notevolmente il completamento automatico della dichiarazione delle variabili.
La nuova sintassi è molto semplice e consiste nella parola chiave “var”, nel nome della variabile e nel suo tipo.
var <variableName> : <type>
È possibile dichiarare le variabili sia con la sintassi classica che con quella nuova nello stesso database.
Per i tipi di dati
Questa sintassi può essere utilizzata per definire i tipi di dati delle variabili. Di seguito sono riportati alcuni esempi che mostrano la corrispondenza tra le due sintassi per le variabili di tipo testo, numerico e immagine.
Sintassi precedente
C_TEXT($text1;$text2)
C_LONGINT ($num)
C_PICTURE (
$pict)
Nuova sintassi
var $text1; $text2: Text
var $num : Integer
var $pict : Picture
Per le classi utente
L’idea delle classi è stata introdotta in 4D v18 R3. Se non l’avete ancora fatto, dovreste leggere questo post del blog.
Finora, tutte le istanze di una classe venivano dichiarate come oggetto. Ora, con la nuova sintassi, è possibile definire a quale istanza di classe appartiene l’oggetto utilizzando il comando cs e il nome della classe. In questo modo si accede alle funzioni e agli attributi della classe.
Sintassi precedente
C_OBJECT($person)
$person :=cs.Person.new()
Nuova sintassi
var $person : cs.Person
$person :=cs.Person.new()
Per le classi 4D
Oggetti come File o Folder sono oggetti appartenenti a classi 4D interne. È possibile accedervi con il comando 4D.
Sintassi precedente
C_OBJECT($folder)
$folder :=Folder(Current resource folder)
Nuova sintassi
var $folder : 4D.Folder
$folder :=Folder(Current resources folder)
E ORDA?
In un precedente post del blog, abbiamo mostrato che è possibile sovrascrivere le classi ORDA (Dataclass, Entity e Entity selection) con le proprie classi. È inoltre possibile utilizzare questa nuova sintassi per usufruire del completamento automatico.
Sintassi precedente
C_OBJECT($dataclass)
C_OBJECT ($entity)
C_OBJECT (
$entitySelection)
Nuova sintassi
var $dataclass : cs.Company
var $entity : cs.CompanyEntity
var $entitySelection : cs.CompanySelection