Bislang gab es nur eine Möglichkeit, eine Klasseneigenschaft zu erstellen:
property <propertyName> : <type>
Ab 4D 20 R5 verbessern wir die Eigenschaftsdeklaration. Wie bei Variablen können Sie jetzt Ihre Eigenschaft in einer Zeile deklarieren und initialisieren, wie unten beschrieben:
abgeleiteter Typ
property <propertyName> := <value>
Hier entfällt der Typ und wird vom Compiler oder Interpreter auf der Grundlage des angegebenen Wertes ermittelt. Um Kompilierungsfehler zu vermeiden, ist es ratsam, diesen Ansatz ausschließlich bei skalaren Typen zu verwenden, die von Werten, Befehlen oder Methoden stammen.
Beispiel:
//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
Deklarierter Typ und Initialisierung
property <propertyName> : <type> := <value>
Wie bei der Variablendeklaration wird die Eigenschaft mit dem angegebenen Typ erstellt und dann mit dem Wert initialisiert.
Dieser Deklarationstyp muss verwendet werden, wenn Sie eine Eigenschaft mit einem Typ wie ein Klassenattribut, eine Interprozessvariable oder eine globale Eigenschaft initialisieren. Wenn Sie den Typ in diesen Fällen nicht angeben, können der Interpreter und der Compiler den Typ nicht bestimmen und verwenden stattdessen einen Variantentyp. Ein Beispiel:
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