Finora esisteva un solo modo per creare una proprietà di classe:
property <propertyName> : <type>
A partire da 4D 20 R5, abbiamo migliorato la dichiarazione delle proprietà. Come per le variabili, ora è possibile dichiarare e inizializzare la proprietà su una sola riga, come descritto di seguito:
tipo dedotto
property <propertyName> := <value>
In questo caso, il tipo è omesso e sarà determinato dal compilatore o dall’interprete in base al valore fornito. Per evitare errori di compilazione, è consigliabile utilizzare questo approccio esclusivamente con tipi scalari provenienti da valori, comandi o metodi.
Esempio:
//BLOB
property myBlob:=GetBlob()
//Boolean
property myBool:=True
//Null
property myNull:=Null
//Real
property myNum:=(569/2)
//Object
property myObj:={att1: 1}
//Text
property myText:="Hello"
//Collection
property myCol:=[1; 2; 3]
//Date
property myDate:=Current date
//Time
property myTime:=Current time
//Picture
property myPicture:=GetPicture()
// Properties must be declared before class constructor or functions.
Class constructor
Tipo dichiarato e inizializzazione
property <propertyName> : <type> := <value>
Come per la dichiarazione della variabile, la proprietà viene creata con il tipo dato e poi inizializzata con il valore.
Questo tipo di dichiarazione deve essere utilizzato quando si inizializza una proprietà con un tipo come un attributo di classe, una variabile interprocesso o una globale. Se non si specifica il tipo in questi casi, l’interprete e il compilatore valuteranno la proprietà senza essere in grado di determinarne il tipo e utilizzeranno invece un tipo variante. Ad esempio:
property myAttribute:=JSON Parse(GetJson()).myAttribute
// The interpreter and the compiler don't know the type of JSON Parse(GetJson()).myAttribute.
// The myAttribute property is declared as a variant