コーディングのもう一つの方法: オブジェクト記法

オブジェクトは素晴らしい、誰もがそう言います。その素晴らしい柔軟性に加え、信じられないほどの速さです。何百万ものレコードをほんの一瞬で検索することができるのです。4D v16 では、オブジェクト属性による並べ替えや、Sum や Average のような計算も可能です。

4D v16 R4 では、オブジェクト記法 のサポートにより、4Dランゲージが大幅に強化され、オブジェクトをより快適に使用できるようになりました。高速で、フレキシブルで、効率的、そしてエレガントです。

何が可能か?

4Dランゲージのオブジェクトは、標準的なオブジェクト記法を用いて、その値を取得・設定することができます。オブジェクト記法を使えば:

  • オブジェクトのプロパティは、”ドット” シンボルでアクセスできます (例: employee.name)
  • オブジェクトのコレクション要素には、角括弧を使用してアクセスすることができます (例: rooms[2])
  • 組み込まれたサブオブジェクトとサブオブジェクトのプロパティは、一連の記号でアクセスできます (例: employee.children[2].age)

つまり、OB GetOB SET を使わなくてすむようになりました。そして、知っていますか? コードの実行速度は OB Get/OB SET を使うよりオブジェクト記法を使った方が10倍速くなります!

オブジェクト記法の例

たとえば、次のような情報を含む $oオブジェクトがあるとします:

{
    "Lastname": "Doe",
    "Firstname": "John",
    "Avatar": "[object Picture]"
    "Child": [{ 
        "Name": "Susan", 
        "Age": 3
    } , { 
        "Name": "Bob", 
        "Age": 8 
    }] 
}

このオブジェクトから “Firstname” 属性を取得するには、次のように書きます:

オブジェクト記法

C_TEXT($name)
$name:=$o.Firstname

オブジェクト記法なし

C_TEXT($name)
$name:=OB Get($o;"Firstname")

2番目の子の “Name” を取得するには、次のように書きます:

オブジェクト表記

C_TEXT($name)
$name:=$o.Child[1].Name

オブジェクト表記なし

ARRAY OBJECT($aChild;0)
C_TEXT($name)
OB GET ARRAY($o;"Child";$aChild)
$name:=OB GET($aChild{2};"Name")

もう一人子供を追加するには、こう書きます:

オブジェクト記法

$o.Child[2].Name:="Mike"
$o.Child[2].Age:=9

オブジェクト表記なし

ARRAY OBJECT($aChild;0)
C_OBJECT($kid)
OB GET ARRAY($o;"Child";$aChild)
OB SET($kid;"Name";"Mike")
OB SET($kid;"Age";9)
APPEND TO ARRAY($aChild;$kid)
OB SET ARRAY($o;"Child";$aChild)

オブジェクト属性に画像を追加するには、こう書きます:

オブジェクト記法

C_PICTURE($img)
READ PICTURE FILE
("img.jpg";$img)
$o.avatar:=$img

オブジェクト表記なし

C_PICTURE($img )
READ PICTURE FILE("img.jpg";$img)
OB SET($o;"avatar";$img)

 ポインター表記を使う場合は、こう書きます:

オブジェクト記法

C_POINTER($p)
$p:=->$o
...
C_TEXT($name)
$name:=$p->Firstname

オブジェクト表記なし

C_POINTER($p)
$p:=->$o
...
C_TEXT($name)
$name:=OB Get($p->;"Firstname")

オブジェクト記法を有効にするには?

オブジェクト記法を有効にするには、データベース設定ダイアログの 互換性タブで “オブジェクト記法を有効化する” ボタンをクリックする必要があります:

オブジェクト表記法を有効にするには、いくつかの前提条件がありますが、準備のお手伝いをさせていただきます:

オブジェクト記法の準備をする >

Vanessa Talbot
- プロダクトオーナー - Vanessa Talbotは、2014年6月に4Dプログラムチームに参加しました。プロダクトオーナーとして、彼女はユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換する役割を担っています。また彼女の役割は、実装された機能が顧客のニーズを満たしているかどうかを確認することでもあります。入社以来、4Dにおける主要機能の定義に関わってきました。プリエンプティブ/マルチスレッドの新機能の大部分と、非常に複雑なテーマである組み込みアプリケーションの新アーキテクチャに取り組んできました。VanessaはTelecom Saint-Etienneで学位を取得後、Criminal Research Institute でオーディオビジュアル部門の開発者としてキャリアをスタートさせました。また、メディアや医療の分野でも、技術サポートやプロダクションの分野で働いてきました。