Até agora, havia apenas uma maneira de criar uma propriedade de classe:
property <propertyName> : <type>
A partir de 4D 20 R5, melhoramos a declaração de propriedades. Como para variáveis, agora pode declarar e inicializar sua propriedade em uma linha, como descrito abaixo:
tipo inferido
property <propertyName> := <value>
Aqui, o tipo é omitido e será determinado pelo compilador ou intérprete com base no valor fornecido. Para evitar erros de compilação, é aconselhável empregar esta abordagem exclusivamente com tipos escalares originados de valores, comandos ou métodos.
Exemplo:
//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 declarado e inicialização
property <propertyName> : <type> := <value>
Quanto à declaração de variável, a propriedade é criada com o tipo fornecido e depois inicializada com o valor.
Esse tipo de declaração deve ser usado quando se inicializa uma propriedade com um tipo como um atributo de classe, uma variável de interprocessamento ou uma variável global. Se não especificar o tipo nestes casos, o intérprete e o compilador avaliarão o tipo e utilizarão um tipo variante. Por exemplo:
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