これまでは、クラス・プロパティを作成する方法は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()
// Properties must be declared before class constructor or functions.
Class constructor
型宣言と初期化
property <propertyName> : <type> := <value>
変数宣言と同様に、プロパティは指定された型で作成され、渡された値で初期化されます。
この型宣言は、クラス属性、インタープロセス間変数、グローバル変数のようなプロパティを初期化する場合には使用する必要があります。このような場合に型を指定しないと、インタプリタやコンパイラは型を評価するも判断できず、そのため代わりにバリアント型を使用します。例:
property myAttribute:=JSON Parse(GetJson()).myAttribute
// インタープリターもコンパイラもJSON Parse(GetJson()).myAttributeの型を知りません。
// myAttribute はバリアント型として宣言されます。