これまでは、クラス・プロパティを作成する方法は1つしかありませんでした:
property <propertyName> : <type>
4D 20 R5からは、プロパティ宣言が強化されました。変数については、以下のように、プロパティの宣言と初期化を1行で行えるようになりました:
推論型
property <propertyName> := <value>
ここで、型は省略され、提供された値に基づいてコンパイラまたはインタープリタによって決定されます。コンパイルエラーを防ぐために、この方法は値、コマンド、メソッドに由来するスカラー型にのみ採用することをお勧めします。
例
//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()
宣言された型と初期化
property <propertyName> : <type> := <value>
変数宣言と同様に、プロパティは指定された型で作成され、その値で初期化されます。
クラス属性、プロセス間変数、グローバル変数のような型でプロパティを初期化する場合は、この宣言型を使用する必要があります。このような場合に型を指定しないと、インタプリタやコンパイラは型を判断できず、代わりにバリアント型を使用すると評価します。例えば
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