| 4D v18Storage | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  | 
    4D v18
 Storage 
         | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Storage -> 戻り値 | ||||||||
| 引数 | 型 | 説明 | ||||||
| 戻り値 | Object |   | 登録された共有オブジェクトおよび共有コレクションのカタログ | |||||
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 useStorage では以下の例で紹介するように、レイジー初期化を使用することで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 v18)
	
	
	
	
	
 コメントを追加
コメントを追加