4D v20 R3 から、変数宣言や代入のためにコードを何行も書く日々に別れを告げることができます。コードを合理化し、冗長性を排除し、簡単に効率を上げましょう!
これまでは、変数の型宣言を次のように書いてきました:
var <variableName> : <type>
このシンタックスを拡張し、変数の宣言と初期化を1行でおこなえるようにしました。
型推論
var <variableName> := <value>
ここではデータ型の宣言は省略され、提供された値に基づいてコンパイラーやインタプリターが決定します。コンパイルエラーを防ぐために、値、コマンド、メソッドに由来するスカラー型にのみ、この方法を採用することをお勧めします。
例:
//BLOB
var $vxBlob : Blob
INTEGER TO BLOB(0x0206; $vxBlob; Native byte ordering)
var $blob:=$vxBlob
//Boolean
var $bool:=True
//Null
var $null:=Null
//Real
var $num:=(569/2)
//Object
var $obj:={att1: 1}
//Pointer
var $point:=->$obj
//Text
var $text:="Hello"
//Collection
var $col:=[1; 2; 3]
//Date
var $date:=Current date
//Time
var $time:=Current time
//Picture
var $pict : Picture
var $image:=$pict
この書き方を使用する場合、4D は最も一般的な型を推論しようとすることに留意が必要です。たとえば、変数が 10 で初期化された場合、4D は整数型ではなく実数型を使用します。これにより、この変数をどのような計算でも使用できるようになります。整数型を使用したい場合は、変数の型を明示的に宣言する必要があります。
型宣言と初期化
var <variableName> : <type> := <value>
ここでは、変数は指定された type の型で作成され、value の値で初期化されます。
この宣言は、クラス属性、インタープロセス変数、グローバル変数のような複雑な型の変数を初期化するときに使用しなければなりません。このような場合に型を指定しないと、インタプリターは式を評価して型を推測しますが、コンパイラーは型を推測できず、代わりにバリアント型を使用します。例:
var $myClass:={myAttribute: "Hello there!"}
var $myAttribute:=$myClass.myAttribute
// インタープリターは $myClass.myAttribute の型を知っています。$myAttribute はテキストとして宣言されます
// コンパイラーは $myClass.myAttribute の型を知りません。$myAttribute はバリアントとして宣言されます
ドキュメントを確認し、この機能が提供する可能性を探求してください。