4D v19collection.copy( ) | 
            ||||||||
                 
                
  | 
                
			
                    
                         
    4D v19
 
collection.copy( ) 
                                
                                
        
 | 
                |||||||
| オプション | 詳細 | 
| ck resolve pointers | オリジナルのコレクションがポインター型の値を格納している場合、デフォルトではコピー先のオブジェクトもポインターを格納します。しかしながら、ck resolve pointers 定数を渡すことで、コピー時にポインターを解決することごとができます。この場合、コレクション内のそれぞれのポインターはコピー時に解決され、解決済みの値が使用されます。 | 
| ck shared | デフォルトでは、たとえ共有コレクションに対して適用された場合でも、copy( ) は通常の(共有でない)コレクションを返します。共有コレクションを返すためには、ck shared 定数を渡してください。この場合、groupWith 引数を使用して他の共有オブジェクト/共有コレクションに割り当てることもできます(以下参照) | 
groupWith 引数を使用すると、返されるコレクションを関連づけたいコレクションまたはオブジェクトを指定することができます。
 C_OBJECT($sharedObject)
 C_COLLECTION($lastnames;$sharedLastnames)
 C_TEXT($text)
 
 $sharedObject:=New shared object
 
 $text:=Document to text(Get 4D folder(Current resources folder)+"lastnames.txt")
 $lastnames:=JSON Parse($text) //$lastnames は通常のコレクション
 
 $sharedLastnames:=$lastnames.copy(ck shared) //$sharedLastnames は共有コレクション
 
  // 共有コレクションになったので$sharedLastnames を$sharedObject に入れることが可能
 Use($sharedObject)
    $sharedObject.lastnames:=$sharedLastnames
 End useどちらも共有コレクションである$sharedColl1 と$sharedColl2 を結合したい場合を考えます。これらは異なる共有グループに所属しているため、直接連結した場合にはエラーが生成されます。そこで$sharedColl1 のコピーを作成し、$sharedColl2 をそのコピーの共有グループ先であると指定する必要があります。
 C_COLLECTION($sharedColl1;$sharedColl2;$copyColl)
 
 $sharedColl1:=New shared collection(New shared object("lastname";"Smith"))
 $sharedColl2:=New shared collection(New shared object("lastname";"Brown"))
 
  //$copyColl は$sharedColl2 と同じ共有グループに所属している
 $copyColl:=$sharedColl1.copy(ck shared;$sharedColl2)
 Use($sharedColl2)
    $sharedColl2.combine($copyColl)
 End use通常のコレクション($lastnames) があり、それをアプリケーションのStorage に入れたい場合を考えます。このためには、先に共有コレクション($sharedLastnames)を作成する必要があります。
 C_COLLECTION($lastnames;$sharedLastnames)
 C_TEXT($text)
 
 $text:=Document to text(Get 4D folder(Current resources folder)+"lastnames.txt")
 $lastnames:=JSON Parse($text) //$lastnames は通常の(非共有)コレクション
 
 $sharedLastnames:=$lastnames.copy(ck shared) // 共有コピーを作成
 
 Use(Storage)
    Storage.lastnames:=$sharedLastnames
 End useここでは、ck resolve pointers オプションを使用した場合の挙動を考えます:
 C_COLLECTION($col)
 C_POINTER($p)
 $p:=->$what
 
 $col:=New collection
 $col.push(New object("alpha";"Hello";"num";1))
 $col.push(New object("beta";"You";"what";$p))
 
 $col2:=$col.copy()
 $col2[1].beta:="World!"
 ALERT($col[0].alpha+" "+$col2[1].beta) // "Hello World!" を表示する
 
 $what:="You!"
 $col3:=$col2.copy(ck resolve pointers)
 ALERT($col3[0].alpha+" "+$col3[1].what) // "Hello You!" を表示する
	プロダクト: 4D
	テーマ: コレクション
	
        
        
	
	
	
	
	
	ランゲージリファレンス ( 4D v19)
	
	
	ランゲージリファレンス ( 4D v19.1)
コメントを追加