ポインター
ポインターの変数や式は、別の変数 (配列、配列要素を含む) 、テーブル、またはフィールドへの参照です。 ポインタータイプのフィールドは、存在しません。
ポインターは、(プログラミングにおける) データを参照するための高度な方法を提供します。 4D ランゲージ使用時にテーブル・フィールド・変数・配列等にアクセスするには、単純に名前を用います。 ですが、名前を使用しないでデータを参照する、またはアクセスした方が便利な場合もあります。 ポインターを使うとこれが実現できます。
ポインターの背景にある概念は、日常生活でもよく使われています。 対象物を正確に知らないまま、それを示すことがあります。 たとえば、友人に対して "登録番号123ABDの車に乗ろう" と言わずに "君の車に乗ろう" と言う場合です。 つまり、"登録番号123ABDの車" を "君の車" で示したわけです。 この場合、"登録番号123ABDの車" はオブジェクトの名前で、"君の車" はオブジェクトを参照するためのポインター と考えることができます。
対象物を明示しないで参照できると、非常に便利です。 たとえば、友人が新しい車に買い替えても、同じく "君の車" と言うことができます。 ポインターも同じように機能します。 たとえば、同じポインターがある時は数値フィールド "Age" を参照し、別の時には数値変数 "Old Age" を参照することもできます。 いずれの場合にもポインターは数値データを参照しており、それは計算に使用することができます。
テーブル・フィールド・変数・配列・配列要素・オブジェクトを参照するためにポインターを使用することができます。 以下の表に、各タイプの例を示します:
タイプ | 参照時 | 使用時 | 代入時 |
---|---|---|---|
テーブル | vpTable:=->[Table] | DEFAULT TABLE(vpTable->) | n/a |
フィールド | vpField:=->[Table]Field | ALERT(vpField->) | vpField->:="John" |
変数 | vpVar:=->Variable | ALERT(vpVar->) | vpVar->:="John" |
配列 | vpArr:=->Array | SORT ARRAY(vpArr->;>) | COPY ARRAY (Arr;vpArr->) |
配列要素 | vpElem:=->Array{1} | ALERT (vpElem->) | vpElem->:="John" |
オブジェクト | vpObj:=->myObject | ALERT (vpObj->myProp) | vpObj->myProp:="John" |