Jusqu’à présent, il n’existait qu’une seule façon de créer une propriété de classe:
property <propertyName> : <type>
À partir de 4D 20 R5, nous améliorons la déclaration des propriétés. Comme pour les variables, vous pouvez désormais déclarer et initialiser votre propriété sur une seule ligne, comme décrit ci-dessous :
type inféré
property <propertyName> := <value>
Ici, le type est omis et sera déterminé par le compilateur ou l’interprète en fonction de la valeur fournie. Pour éviter les erreurs de compilation, il est conseillé d’utiliser cette approche exclusivement avec des types scalaires provenant de valeurs, de commandes ou de méthodes.
Exemple :
//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()
Type déclaré et initialisation
property <propertyName> : <type> := <value>
Comme pour la déclaration de variable, la propriété est créée avec le type donné, puis initialisée avec la valeur.
Ce type de déclaration doit être utilisé lorsque vous initialisez une propriété avec un type tel qu’un attribut de classe, une variable interprocessus ou une variable globale. Si vous ne spécifiez pas le type dans ces cas, l’interpréteur et le compilateur évalueront le type et utiliseront une variante de type à la place. Par exemple, dans 4D 20 R5, la déclaration de la propriété
property myAttribute:=JSON Parse($myJson).myAttribute
// The interpreter and the compiler don't know the type of JSON Parse($myJson).myAttribute.
// $myAttribute is a declared as variant