ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
Storage
|
Storage -> 戻り値 | ||||||||
引数 | 型 | 説明 | ||||||
戻り値 | オブジェクト |
![]() |
登録された共有オブジェクトおよび共有コレクションのカタログ | |||||
Storage メソッドはカレントのマシンあるいはコンポーネント上において、Storage オブジェクトに登録した共有オブジェクトまたは共有コレクションの一覧を返します。
Storage から返されたカタログは、4Dによって自動的に作成され、プリエンプティブプロセスを含めてデータベースの全てのプロセスが利用可能です。マシンとコンポーネント一つにつきStorage カタログは一つしかありません。C/S アプリケーションにおいては、サーバーにStorage 共有オブジェクトを一つ、リモート4D アプリケーションにStorage 共有オブジェクトを一つ持つことが可能です。データベースがコンポーネントを使用する場合、一つのコンポーネントに対しStorage オブジェクトは一つです。
Storage から返されたカタログを使用すると、あらゆるプリエンプティブプロセスあるいは標準プロセスで使用可能な共有オブジェクトあるいは共有コレクションを、すべて参照することができます。共有オブジェクトあるいは共有コレクションをカタログに登録するためには、その参照をStorage から返された共有オブジェクトに追加します。
Storage から返されたカタログは共有オブジェクトであるため、共有オブジェクトと共有コレクション の章で説明されているルールに従いますが、以下の点に注意する必要があります:
典型的な例としては、Storage オブジェクトをの中で初期化する場合が考えられます:
Use(Storage)
Storage.counters:=New shared object("customers";0;"invoices";0)
End use
この例ではStorage 値を設定する標準的な方法を紹介しています:
Use(Storage)
Storage.mydata:=New shared object
Use(Storage.mydata)
Storage.mydata.prop1:="Smith"
Storage.mydata.prop2:=100
End use
End use
Storage では以下の例で紹介するように、レイジー初期化を使用することでsingleton を実装することができます。
注: Singleton パターンについてのより詳細な情報については、Wikipediaの記事を参照してください。
C_LONGINT($0)
C_LONGINT($counterValue)
C_OBJECT(counter) //プロセスのcounter への参照を作成
If(counter=Null) //参照がNullであれば、Storageから参照を取得
Use(Storage) //Storage のUse は一度限りで十分!
If(Storage.counter=Null)
Storage.counter:=New shared object("operation";0)
End if
counter:=Storage.counter //counter共有オブジェクトの参照を取得
End use
End if
Use(counter) //共有オブジェクトcounter を直接使用(Storage を使用する必要はなし!)
counter.operation:=counter.operation+1
$counterValue:=counter.operation
End use
$0:=$counterValue
プロダクト: 4D
テーマ: オブジェクト(ランゲージ)
番号:
1525
初出: 4D v16 R6
ランゲージリファレンス ( 4D v20 R7)