4D v16 R6では、オブジェクト記法で使用する40以上のメソッドにより、コレクションを操作するための高度な機能を提供します。これらを使用することで、より効率的な方法でコードを書くことができるようになります。新しいコードは素晴らしいですが、この新しいコードは既存のコードと簡単に統合する必要があることも念頭に置いています。このため、コレクションを配列や文字列に変換したり、その逆を行う専用のコマンドを導入しました。
この記事は、4D v16 R6で追加されたメソッドでコレクションを操作するシリーズの2つ目です。さらに詳しく知りたい方は、コレクションメソッドの無数の可能性を示す12の例を含むデータベースの例をダウンロードしてください。
それでは、コレクションの変換とコード例について説明します。
配列とコレクション
コレクションを配列に変換する
この COLLECTION TO ARRAYコマンドは、コレクションから要素を取り出して配列に格納します。
ARRAY TEXT($artFruits;0)
$fruits :=New collection("Orange"; "Banana"; "Apple"; "Grape")
// Convert the $fruits collection to a text array
COLLECTION TO ARRAY (
$fruits;$artFruits)
//$artFruits{1}="Orange"
//$artFruits{2}="Banana"
//..
同じコマンドで、オブジェクトのコレクションから複数の配列を埋めることもできる。
ARRAY TEXT($city;0)
$col :=New collection(New object("name"; "Cleveland"; "zc";35049))
$col .push(New object("name"; "Blountsville"; "zc";35031))
// Convert $col collection to 2 arrays
COLLECTION TO ARRAY ($col;$city; "name";$zipCode; "zc")
//$city{1}="Cleveland"
//$city{2}="Blountsville"
//...
//$zipCode{1}="35049"
//$zipCode{2}="35031"
//...
配列からコレクションへ
また、配列をコレクションに変換するコマンドもあります。 ARRAY TO COLLECTION:
$colFruits:=New collection
(
// Convert $artFruits array to a collection
ARRAY TO COLLECTION$colFruits;$artFruits)
//$colFruits=[Orange,Banana,Apple,Grape]
あるいは、複数の配列からオブジェクトのコレクションを埋める。
$colCity:=New collection
// Convert $city and $zipCode arrays to a collection of objects
ARRAY TO COLLECTION ($colCity;$city; "cityName";$zipCode; "Zip")
//$colCity[0]={cityName:Cleveland,Zip:35049}
//$colCity[1]={cityName:Blountsville,Zip:35031}
コレクションで文字列を操作する
でコレクションに変換できます。 Split stringコマンドは、文字列をセパレータ文字に基づく部分文字列のコレクションに分割します。
$text:="John;Doe;120 jefferson st.;Riverside;; NJ; 08075"
$col :=Split string($text;";")
//$col:=["John","Doe","120 jefferson st.","Riverside",""," NJ"," 08075"]
また、いくつかのコレクション要素を変更したり、新しい文字列を作成するには join メソッドを使って、コレクション要素を修正し、新しい文字列を作成することもできます。
$col[2]:="95 S Market St #240"
$col [3]:="San Jose"
$col [5]:="CA"
$col [6]:="95113"
$text :=$col.join(";")
//$text="John;Doe;95 S Market St #240;San Jose;;CA;95113"
コレクションを操作する方法については、まだ他にも記事があります。