4Dのオートコンプリート機能について不思議に思ったことはありませんか?また、なぜ4Dはコード内で使用されているすべての関数を示唆するのでしょうか?オブジェクトは非常に汎用的な型なので、4Dは実行時にしか本当に保存しているものを知りません。しかし、それはコードを書くときにはあまり役に立ちません。
4D では、変数を宣言するときに、オートコンプリートを大幅に強化する新しい構文を提供しています。
新しい構文は非常にシンプルで、「var」キーワードと変数名、そして型から構成されています。
var <variableName> : <type>
同じデータベース内で、従来の構文と新しい構文の両方で変数を宣言することができます。
データ型について
この構文は、変数のデータ型を定義するために使うことができます。以下は、テキスト、数値、画像のデータ型の変数について、両構文の対応関係を示す例です。
旧シンタックス
C_TEXT($text1;$text2)
C_LONGINT ($num)
C_PICTURE (
$pict)
新しい構文
var $text1; : : :$text2 Text
var $num Integer
var $pict Picture
ユーザークラスの場合
4D v18 R3 でクラスという考え方が導入されました。まだの方は、このブログ記事を読んでみてください。
これまでは、クラスのインスタンスはすべてオブジェクトとして宣言されていました。新しい構文では、cs コマンドとクラス名を使って、オブジェクトがどのクラスインスタンスに属するかを定義できるようになりました。これにより、そのクラスの関数や属性にアクセスできるようになります。
以前の構文
C_OBJECT($person)
$person :=cs.Person.new()
新しい構文
var $person :cs.Person
$person :=cs.Person.new()
4D クラスの場合
File やFolder のようなオブジェクトは、内部 4D クラスに属するオブジェクトです。これらにアクセスするには、4D コマンドを使用します。
以前のシンタックス
C_OBJECT($folder)
$folder :=Folder(Current resource folder)
新しい構文
var $folder :4D.Folder
)
$folder :=Folder(Current resources folder
ORDAについてはどうでしょうか?
以前のブログ記事で、ORDAのクラス(データクラス、エンティティ、エンティティセレクション)を独自のクラスでオーバーライドできることを紹介しましたが、今回の新しい構文では、ORDAのクラス(データクラス、エンティティ、エンティティセレクション)を独自のクラスでオーバーライドできます。また、この新しい構文を使って、オートコンプリートを楽しむことができます。
以前の構文
C_OBJECT($dataclass)
C_OBJECT ($entity)
C_OBJECT (
$entitySelection)
新しい構文
var $dataclass :cs.Company
var $entity :cs.CompanyEntity
var $entitySelection :cs.CompanySelection