A partire da 4D v20 R3, potete dire addio ai giorni in cui dovevate scrivere più righe di codice per le dichiarazioni e le assegnazioni delle variabili. Ora è possibile semplificare il codice, eliminare la ridondanza e aumentare l’efficienza con facilità.
Ecco come fare!
Finora si poteva scrivere:
var <variableName> : <type>
Questa sintassi è stata migliorata per consentire di dichiarare e inizializzare la variabile in una sola riga.
tipo dedotto
var <variableName> := <value>
In questo caso, il tipo viene omesso e sarà determinato dal compilatore o dall’interprete in base al valore fornito. È consigliabile utilizzare questo approccio esclusivamente con tipi scalari provenienti da valori, comandi o metodi, per evitare errori di compilazione.
Esempio:
//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
Quando si utilizza questo stile di scrittura, si ricorda che 4D cerca di dedurre il tipo più generale. Ad esempio, 4D utilizza il tipo Real e non il tipo Integer quando una variabile viene inizializzata con 10. In questo modo è possibile utilizzare questa variabile con i valori di un’altra variabile. Ciò consente di utilizzare questa variabile con qualsiasi tipo di calcolo. Se si desidera utilizzare un intero, è necessario dichiarare esplicitamente il tipo della variabile.
Tipo dichiarato e inizializzazione
var <variableName> : <type> := <value>
In questo caso, la variabile viene creata con il tipo indicato e poi inizializzata con il valore.
Questo tipo di dichiarazione deve essere utilizzato quando si inizializza una variabile con un tipo complesso, come un attributo di classe, una variabile interprocesso o una variabile globale. Se non si specifica il tipo in questi casi, l’interprete valuterà l’espressione e dedurrà il tipo, mentre il compilatore non sarà in grado di dedurre il tipo e utilizzerà invece un tipo variante. Per esempio:
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
Perciò, immergetevi nella documentazione, esplorate le infinite possibilità offerte da questa funzione e verificate in prima persona come questa novità rivoluzionaria darà forma al futuro dei vostri sforzi di codifica.