Collection
Collectionクラスは コレクション 型の変数を扱います。
コレクションは次のように初期化します:
New collection {( ...value : any )} : Collection 空の、あるいは値の入った新規コレクションを作成し、その参照を返します |
New shared collection {( ...value : any )} : Collection 空の、あるいは値が入った新規コレクションを作成し、その参照を返します |
例題
var $colVar : Collection // コレクション型の 4D変数の宣言
$colVar:=New collection // コレクションの初期化と 4D変数への代入
概要
New collection
New collection {( ...value : any )} : Collection
引数 | タイプ | 説明 | |
---|---|---|---|
value | Number, Text, Date, Time, Boolean, Object, Collection, Picture, Pointer | -> | コレクションの値 |
戻り値 | Collection | <- | 新規のコレクション |
説明
New collection
コマンドは、空の、あるいは値の入った新規コ レクションを作成し、その参照を返します。
引数を渡さなかった場合、New collection
は空のコレクションを作成し、その参照を返します。
返された参照は、コレクション型の 4D変数に代入する必要があります。
var : Collection
やC_COLLECTION
ステートメントはコレクション型の変数を宣言しますが、コレクション自体は作成しないという点に注意してください。
任意で、一つ以上の value 引数を渡すことで、あらかじめ値の入った新しいコレクションを作成することができます。
または、あとから代入によって要素を一つずつ追加・編集していくことができます。 例:
myCol[10]:="My new element"
コレクションの最終要素を超える要素番号 (インデックス) を指定し た場合、コレクションは自動的にリサイズされ、合い間の要素にはすべて null 値が割り当てられらます。
サポートされている型 (数値、テキスト、日付、ピクチャー、ポインター、オブジェクト、コレクション等) であれば、個数に制限なく値を渡すことができます。 配列とは異なり、コレクションでは異なる型のデータを混ぜることができます。
ただし以下の変換問題については注意する必要があります:
- 渡されたポインターは、そのまま保存されます。ポインターは
JSON Stringify
コマンドを使用することで評価されます。 - 日付は、"dates inside objects" データベース設定に応じて、"yyyy-mm-dd" という日付、または "YYYY-MM-DDTHH:mm:ss.SSSZ" というフォーマットの文字列で保存されます。 コレクションに保存する前に 4D日付をテキストに変換した場合、プログラムはデフォルトでローカルのタイムゾーンを使用します。 このふるまいは
SET DATABASE PARAMETER
コマンドでDates inside objects
セレクターを使用することで変更可能です。 - 時間を渡した場合、それはミリ秒の数 (実数) として保存されます。
例題 1
新しい空のコレクションを作成し、それを 4Dコレクション変数に代入します:
var $myCol : Collection
$myCol:=New collection
// $myCol=[]
例題 2
あらかじめ値の入ったコレクションを作成します:
var $filledColl : Collection
$filledColl:=New collection(33;"mike";"november";->myPtr;Current date)
// $filledColl=[33,"mike","november","->myPtr","2017-03-28T22:00:00.000Z"]
例題 3
新しいコレクションを作成し、そこに新しい要素を追加します:
var $coll : Collection
$coll:=New collection("a";"b";"c")
// $coll=["a","b","c"]
$coll[9]:="z" // 値 "z" を10番目の要素として追加します
$vcolSize:=$coll.length // 10
// $coll=["a","b","c",null,null,null,null,null,null,"z"]
New shared collection
履歴
リリース | 内容 |
---|---|
v16 R6 | 追加 |
New shared collection {( ...value : any )} : Collection
引数 | タイプ | 説明 | |
---|---|---|---|
value | Number, Text, Date, Time, Boolean, Shared object, Shared collection | -> | 共有コレクションの値 |
戻り値 | Collection | <- | 新規の共有コレクション |
説明
New shared collection
コマンドは、空の、あるいは値が入った新規コレクションを作成し、その参照を返します。
このコレクションに要素を追加する場合には Use...End use 構造でくくる必要があり、そうしない場合にはエラーが返されます。ただし、push()
や map()
などの関数を使用して要素を追加する場合は、自動で内部的に Use...End use が使用されるため、必要ありません。 ただし、属性の読み取りは Use...End use
構造の外側でも可能です。
共有コレクションについての詳細は、共有オブジェクトと共有コレクション のページを参照してください。
引数を渡さない場合、New shared collection
は空のコレクションを作成し、その参照を返します。
返された参照は、コレクショ ン型の 4D変数に代入する必要があります。
var : Collection
やC_COLLECTION
ステートメントはコレクション型の変数を宣言しますが、コレクション自体は作成しないという点に注意してください。
任意で、一つ以上の value 引数を渡すことで、あらかじめ値の入った新しい共有コレクションを作成することができます。 または、あとからオブジェクト記法による代入で要素を一つずつ追加・編集していくことができます (例題参照)。
共有コレクションの最終要素を超える要素番号 (インデックス) を指定した場合、共有コレクションは自動的にリサイズされ、合い間の要素にはすべて null 値が割り当てられらます。
以下のサポートされる型であれば、いくつでも値を渡すことができます:
- 数値 (実数、倍長整数...)。 数値は常に実数として保存されます。
- テキスト
- ブール
- 日付
- 時間 (ミリ秒の数 (実数) として保存されます)。
- null
- 共有オブジェクト(*)
- 共有コレクション(*)
標準のコレクション (非共有コレクション) とは異なり、共有コレクションはピクチャーやポインター、共有でないオブジェクトおよびコレクションはサポートしていません。
(*) 共有オブジェクトおよびコレクションが共有コレクションに追加された場合、それらは同じ ロック識別子 を共有します。 この点についてのより詳細は、4D Doc Center を参照ください。
例題
$mySharedCol:=New shared collection("alpha";"omega")
Use($mySharedCol)
$mySharedCol[1]:="beta"
End use
.at()
履歴
リリース | 内容 |
---|---|
20 | 追加 |
.at( index : Integer ) : any
引数 | タイプ | 説明 | |
---|---|---|---|
index | Integer | -> | 取得する要素のインデックス |
戻り値 | any | <- | そのインデックスにある要素 |
説明
.at()
関数は、index の位置にある要素を返します (index は正負の整数)。
このコマンドは、元のコレクションを変更しません。
負の整数が渡された場合、コレクションの最後の要素から逆向きに数えます。
index がコレクションの範囲を超える場合、この関数は Undefined を返します。
例題
var $col : Collection
$col:=New collection(10; 20; 30; 40; 50)
$element:=$col.at(0) // 10
$element:=$col.at(1) // 20
$element:=$col.at(-1) // 50
$element:=$col.at(-2) // 40
$element:=$col.at(10) // undefined
.average()
履歴
リリース | 内容 |
---|---|
v16 R6 | 追加 |
.average( {propertyPath : Text } ) : Real
引数 | タイプ | 説明 | |
---|---|---|---|
propertyPath | Text | -> | 計算に使用するオブジェクトプロパティのパス |
戻り値 | Real, Undefined | <- | コレクションの値の算術平均 |
説明
.average()
関数は、コレクションインスタンス内で定義されている値の算術平均を返します。
計算の対象となるのは数値のみです (他の型の要素は無視されます)。
コレクションがオブジェクトを格納している場合には、計算するオブジェクトプロパティのパスを propertyPath に渡します。
.average()
は以下の場合には undefined
を返します:
- コレクションが空の場合
- コレクションに数値が含まれていない場合
- propertyPath 引数で指定したパスがコレク ション内で見つからない場合
例題 1
var $col : Collection
$col:=New collection(10;20;"Monday";True;6)
$vAvg:=$col.average() //12
例題 2
var $col : Collection
$col:=New collection
$col.push(New object("name";"Smith";"salary";10000))
$col.push(New object("name";"Wesson";"salary";50000))
$col.push(New object("name";"Gross";"salary";10500))
$vAvg:=$col.average("salary") //23500
.clear()
履歴
リリース | 内容 |
---|---|
v16 R6 | 追加 |
.clear() : Collection
引数 | タイプ | 説明 | |
---|---|---|---|
戻り値 | Collection | <- | 全要素が削除された元のコレクション |
説明
.clear()
関数は、コレクションインスタンス内の全要素を削除し、空のコレクションを返します。
このコマンドは、元のコレクションを変更します。
例題
var $col : Collection
$col:=New collection(1;2;5)
$col.clear()
$vSize:=$col.length //$vSize=0
.combine()
履歴
リリース | 内容 |
---|---|
v16 R6 | 追加 |
.combine( col2 : Collection {; index : Integer } ) : Collection
引数 | タイプ | 説明 | |
---|---|---|---|
col2 | Collection | -> | 追加するコレクション |
index | Integer | -> | 追加要素を挿入する位置 (デフォルトは length+1) |
戻り値 | Collection | <- | 追加要素を格納した元のコレクション |
説明
.combine()
関数は、コレクションインスタンスの最後、あるいは index で指定した位置に col2 の要素を挿入し、変更された元のコレクションを返します。 .insert()
関数とは異なり、.combine()
は col2 の各要素を元のコレクション追加します (col2 自体が単一のコレクション要素としては挿入されるわけではありません)。
このコマンドは、元のコレクションを変更します。
デフォルトでは、col2 の要素は元のコレクションの最後に追加されます。 index に引数を渡すことで、col2 の要素を挿入する位置を指定することができます。
警告: コレクション要素は 0 起点である点に注意してください。
- 指定した index がコレクションの length より大きい場合、実際の開始インデックスはコレクションの length に設定されます。
- index < 0 の場合、index:=index+length として再計算されます (コレクションの終端からのオフセットであるとみなされます)。
- 計算結果も負の値である場合、index は 0 に設定されます。
例題
var $c; $fruits : Collection
$c:=New collection(1;2;3;4;5;6)
$fruits:=New collection("Orange";"Banana";"Apple";"Grape")
$c.combine($fruits;3) //[1,2,3,"Orange","Banana","Apple","Grape",4,5,6]
.concat()
履歴
リリース | 内容 |
---|---|
v16 R6 | 追加 |
.concat( value : any { ;...valueN } ) : Collection
引数 | タイプ | 説明 | |
---|---|---|---|
value | Number, Text, Object, Collection, Date, Time, Boolean, Picture | -> | 連結する値。 value がコレクションの場合、コレクションの全要素が元のコレクションに追加されます。 |
戻り値 | Collection | <- | 元のコレクションに値が追加された新規コレクション |
説明
.concat()
関数は、value に指定した要素を元のコレクションの最後に追加した、新しいコレクションを返します。
このコマンドは、元のコレクションを変更しません。
value がコレクションの場合、その全要素が新しい要素として元のコレクションの最後に追加されます。 value がコレクションでない場合、それ自体が新しい要素として追加されます。
例題
var $c : Collection
$c:=New collection(1;2;3;4;5)
$fruits:=New collection("Orange";"Banana";"Apple";"Grape")
$fruits.push(New object("Intruder";"Tomato"))
$c2:=$c.concat($fruits) //[1,2,3,4,5,"Orange","Banana","Apple","Grape",{"Intruder":"Tomato"}]
$c2:=$c.concat(6;7;8) //[1,2,3,4,5,6,7,8]
.copy()
履歴
リリース | 内容 |
---|---|
18 R3 | ck shared オプションの追加。 groupWith パラメーターを追加。 |
v16 R6 | 追加 |
.copy() : Collection
.copy( option : Integer ) : Collection
.copy( option : Integer ; groupWithCol : Collection ) : Collection
.copy( option : Integer ; groupWithObj : Object ) : Collection
引数 | タイプ | 説明 | |
---|---|---|---|
option | Integer | -> | ck resolve pointers : コピー前にポインターを解決するck shared : 共有コレクションを返す |
groupWithCol | Collection | -> | 結果のコレクションとグループする共有コレクション |
groupWithObj | Object | -> | 結果のコレクションとグループする共有オブジェクト |
戻り値 | Collection | <- | 元のコレクションのディープ・コピー |
説明
.copy()
関数は、 コレクションインスタンスのディープ・コピーを返します。ディープ・コピー とは、元のコレクション内のオブジェクトやコレクションは複製されることを意味し、返されたコレクションと元のコレクションは参照を共有しないということを意味します。
このコマンドは、元のコレクションを変更しません。
任意の option パラメーターには、以下のどちらか (あるいは両方) の定数を渡すことができます:
option | 説明 |
---|---|
ck resolve pointers | オリジナルのコレクションがポインター型の値を格納している場合、デフォルトではコピー先のオブジェクトもポインターを格納します。 しかしながら、ck resolve pointers 定数を渡すことで、コピー時にポインターを解決することができます。 この場合、コレクション内の各ポインターはコピー時に解決され、解決済みの値が使用されます。 |
ck shared | 共有コレクションに対して適用された場合でも、copy() はデフォルトで通常の (非共有の) コレクションを返します。 共有コレクションを作成するには、ck shared 定数を渡します。 この場合には、groupWith パラメーターに引数を渡して他の共有オブジェクトまたは共有コレクションに関連づけることもできます (以下参照)。 |
groupWithCol または groupWithObj 引数を渡すと、結果のコレクションを関連づけるコレクションまたはオブジェクトを指定できます。
データストア、データクラス、およびエンティティオブジェクトはコピーできません。 これらを対象に .copy()
を呼び出すと、Null
値が返されます。
例題 1
通常の (非共有の) コレクション $lastnames * を、共有オブジェクト $sharedObject 内にコピーします。 このためには、まず共有コレクション ($sharedLastnames*) を作成する必要があります。
var $sharedObject : Object
var $lastnames;$sharedLastnames : Collection
var $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
例題 2
どちらも共有コレクションである $sharedColl1 と*$sharedColl2* を結合します。 これらは異なる共有グループに所属しているため、直接結合した場合にはエラーが生成されます。 そこで、 $sharedColl1 のコピーを作成し、$sharedColl2 をそのコピーの共有グループ先に指定します。
var $sharedColl1;$sharedColl2;$copyColl : Collection
$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
例題 3
通常のコレクション ($lastnames) があり、それをアプリケーションの Storage に入れます。 これには、先に共有コレクション ($sharedLastnames) を作成しておく必要があります。
var $lastnames;$sharedLastnames : Collection
var $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
例題 4
ck resolve pointers
オプションを使用した場合のふるまいです:
var $col : Collection
var $p : Pointer
$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 world!" を表示します
.count()
履歴
リリース | 内容 |
---|---|
v16 R6 | 追加 |
.count( { propertyPath : Text } ) : Real
引数 | タイプ | 説明 | |
---|---|---|---|
propertyPath | Text | -> | 計算に使用するオブジェクトプロパティのパス |
戻り値 | Real | <- | コレクション内の要素の数 |
説明
.count()
関数は、コレクション内の、null ではない要素の個数を返します。
コレクションがオブジェクトを含んでいる場合、propertyPath 引数を渡すことができます。 この場合、propertyPath で指定したパスを含む要素のみがカウントされます。
例題
var $col : Collection
var $count1;$count2 : Real
$col:=New collection(20;30;Null;40)
$col.push(New object("name";"Smith";"salary";10000))
$col.push(New object("name";"Wesson";"salary";50000))
$col.push(New object("name";"Gross";"salary";10500))
$col.push(New object("lastName";"Henry";"salary";12000))
$count1:=$col.count() //$count1=7
$count2:=$col.count("name") //$count2=3
.countValues()
履歴
リリース | 内容 |
---|---|
v16 R6 | 追加 |
.countValues( value : any {; propertyPath : Text } ) : Real
引数 | タイプ | 説明 | |
---|---|---|---|
value | Text, Number, Boolean, Date, Object, Collection | -> | 数える値 |
propertyPath | Text | -> | 計算に使用するオブジェクトプロパティのパス |
戻り値 | Real | <- | 値の出現回数 |
説明
.countValues()
関数は、
value 引数に指定した値がコレクション内において見つかった回数を返します。
value には、以下のいずれかを渡すことができます:
- スカラー値 (テキスト、数値、ブール、日付)
- オブジェクトあるいはコレクションの参照
要素が検出されるためには、value 引数の型が要素の型と合致している必要があります。このファンクションは等号演算子を使用します。
任意の propertyPath 引数を渡すと、オブジェクトのコレクションにおける値の個数を数えることができます。 propertyPath には値を検索するプロパティパスを渡します。
このコマンドは、元のコレクションを変更しません。
例題 1
var $col : Collection
var $vCount : Integer
$col:=New collection(1;2;5;5;5;3;6;4)
$vCount:=$col.countValues(5) // $vCount=3
例題 2
var $col : Collection
var $vCount : Integer
$col:=New collection
$col.push(New object("name";"Smith";"age";5))
$col.push(New object("name";"Wesson";"age";2))
$col.push(New object("name";"Jones";"age";3))
$col.push(New object("name";"Henry";"age";4))
$col.push(New object("name";"Gross";"age";5))
$vCount:=$col.countValues(5;"age") //$vCount=2
例題 3
var $numbers; $letters : Collection
var $vCount : Integer
$letters:=New collection("a";"b";"c")
$numbers:=New collection(1;2;$letters;3;4;5)
$vCount:=$numbers.countValues($letters) //$vCount=1
.distinct()
履歴
リリース | 内容 |
---|---|
20 | ck count values をサポート |
v16 R6 | 追加 |
.distinct( {options : Integer} ) : Collection
.distinct( propertyPath : Text {; options : Integer } ) : Collection
引数 | タイプ | 説明 | |
---|---|---|---|
propertyPath | Text | -> | 重複しない値を取得する属性のパス |
options | Integer | -> | ck diacritical , ck count values |
戻り値 | Collection | <- | 重複しない値のみを格納した新規コレクション |
説明
.distinct()
関数は、
元のコレクションから重複しない (異なる) 値のみを格納した新しいコレクションを返します。
このコマンドは、元のコレクションを変更しません。
返されたコレクションは自動的に並べ替えられています。 Null 値は返されません。
コレクションがオブジェクトを格納している場合には、重複しない値を取得するオブジェクトプロパティのパスを propertyPath に渡します。
options 引数として、以下の定数を 1つ、または組み合わせで渡すこ とができます:
定数 | 値 | 説明 |
---|---|---|
ck diacritical | 8 | 文字の大小とアクセントを区別して評価をおこないます。 省略された場合のデフォルトでは、アクセント等の発音区別符号を無視した評価が実行されます。 |
ck count values | 32 | 特定の値を持つ要素の数 (重複がなければ 1、重複があればその数) を返します。 このオプションを渡すと、.distinct() は、{"value":*value*;"count":*count*} のプロパティを含むオブジェクトのコレクションを返します。 |
例題
var $c; $c2; $c3 : Collection
$c:=New collection
$c.push("a";"b";"c";"A";"B";"c";"b";"b")
$c.push(New object("size";1))
$c.push(New object("size";3))
$c.push(New object("size";1))
$c2:=$c.distinct() //$c2=["a","b","c",{"size":1},{"size":3},{"size":1}]
$c2:=$c.distinct(ck diacritical) //$c2=["a","A","b","B","c",{"size":1},{"size":3},{"size":1}]
$c2:=$c.distinct("size") //$c2=[1,3]
$c3:=$c.distinct("size";ck count values) //$c3=[{value:1,count:2},{value:3,count:1}]
.equal()
履歴
リリース | 内容 |
---|---|
v16 R6 | 追加 |
.equal( collection2 : Collection {; option : Integer } ) : Boolean
引数 | タイプ | 説明 | |
---|---|---|---|
collection2 | Collection | -> | 比較するコレクション |
option | Integer | -> | ck diacritical : アクセント等の発音区別符号を無視しない評価 (たとえば "A" # "a") |
戻り値 | Boolean | <- | コレクションが同一の場合には true、それ以外は false |
説明
.equal()
関数は、コレクションの内容と collection2 を再帰的に比較し (ディープ比較)、同一であれば true を返します。
.equal()
関数は、コレクション内の文字列、ブール値、数値、および null型要素の等価性をチェックするだけです。 ネイティブオブジェクトの等価性はチェックされません。- null値の要素は undefined要素と同じとはみなされません。
デフォルトでは、アクセント等の発音区別符号を無視した評価が実行されます。 評価の際に文字の大小を区別したり、アクセント記号を区別したい場合には、option に ck diacritical
定数を渡します。
例題
var $c; $c2 : Collection
var $b : Boolean
$c:=New collection(New object("a";1;"b";"orange");2;3)
$c2:=New collection(New object("a";1;"b";"orange");2;3;4)
$b:=$c.equal($c2) // false
$c:=New collection(New object("1";"a";"b";"orange");2;3)
$c2:=New collection(New object("a";1;"b";"orange");2;3)
$b:=$c.equal($c2) // false
$c:=New collection(New object("a";1;"b";"orange");2;3)
$c2:=New collection(New object("a";1;"b";"ORange");2;3)
$b:=$c.equal($c2) // true
$c:=New collection(New object("a";1;"b";"orange");2;3)
$c2:=New collection(New object("a";1;"b";"ORange");2;3)
$b:=$c.equal($c2;ck diacritical) //false
.every()
履歴
リリース | 内容 |
---|---|
19 R6 | フォーミュラをサポート |
v16 R6 | 追加 |
.every( { startFrom : Integer ; } formula : 4D.Function { ;...param : any } ) : Boolean
.every( { startFrom : Integer ; } methodName : Text { ;...param : any } ) : Boolean
引数 | タイプ | 説明 | |
---|---|---|---|
startFrom | Integer | -> | テストを開始するインデックス |
formula | 4D.Function | -> | フォーミュラオブジェクト |
methodName | Text | -> | メソッド名 |
param | any | -> | formula または methodName に渡す引数 |
戻り値 | Boolean | <- | すべての要素がテストをパスすれば true |
説明
.every()
関数は、 コレクション内の全要素が、formula オブジェクトまたは methodName に指定したメソッドで実装されたテストにパスした場合には true を返します。
次のいずれかを使用して、コレクション要素を評価するために実行されるコールバックを指定します:
- formula (推奨シンタックス)、関数やプロジェクトメソッドを含むあらゆる実行可能な式を格納できる Formula オブジェクト。
- または methodName、プロジェクトメソッドの名前 (テキスト)。
コールバックには、param (任意) に指定した引数が渡されます。 引数の有無にかかわらず、コールバックは任意のテストを実行でき、テストを満たす要素に対しては true を返さなくてはなりません。 コールバックは最初のパラメーター ($1) に Object
を受け取ります。
コールバックは以下の引数を受け取ります:
- $1.value: 評価する要素の値
- $2: param
- $N...: paramN...
また、コールバックは以下のパラメーターを設定できます:
- (メソッドを使用する場合は必須) $1.result (ブール): 要素の値の評価が成功した場合には true 、それ以外は false
- $1.stop (ブール、任意): メソッドコールバックを止める場合には true。 返された値は最後に計算されたものです。
.every()
関数は、false として評価されたコレクション要素を発見すると、コールバックの呼び出しをやめて false を返します。
デフォルトでは、.every()
はコレクション全体をテストします。 任意で、startFrom にテストを開始する要素のインデックスを渡すこともできます。
- startFrom がコレクションの length 以上だった場合、false が返されます。これはコレクションがテストされていないことを意味します。
- startFrom < 0 の場合には、コレクションの終わりからのオフセットであるとみなされます(startFrom:=startFrom+length)。
- startFrom = 0 の場合、コレクション全体がテストされます (デフォルト)。
例題 1
var $c : Collection
var $b : Boolean
var $f : 4D.Function
$f:=Formula($1.value>0)
$c:=New collection
$c.push(5;3;1;4;6;2)
$b:=$c.every($f) // true を返します
$c.push(-1)
$b:=$c.every($f) // false を返します
例題 2
コレクション要素がすべて実数型であるかをテストします:
var $c : Collection
var $b : Boolean
var $f : 4D.Function
$f:=Formula(Value type($1.value)=$2
$c:=New collection
$c.push(5;3;1;4;6;2)
$b:=$c.every($f;Is real) //$b=true
$c:=$c.push(New object("name";"Cleveland";"zc";35049))
$c:=$c.push(New object("name";"Blountsville";"zc";35031))
$b:=$c.every($f;Is real) //$b=false
.extract()
履歴
リリース | 内容 |
---|---|
v16 R6 | 追加 |
.extract( propertyPath : Text { ; option : Integer } ) : Collection
.extract( propertyPath : Text ; targetPath : Text { ;...propertyPathOrTargetPathN : Text } ) : Collection
引数 | タイプ | 説明 | |
---|---|---|---|
propertyPath | Text | -> | 新しいコレクションに抽出する値のオブジェクトプロパティパス |
targetpath | Text | -> | 抽出先のプロパティパスあるいはプロパティ名 |
option | Integer | -> | ck keep null : 返されるコレクションに null プロパティを含めます (デフォルトでは無視されます)。 targetPath を渡した場合には、この引数は無視されます。 |
戻り値 | Collection | <- | 抽出した値を格納した新しいコレクション |
説明
.extract()
関数は、元のオブジェクトのコレクションから、propertyPath 引数が指定するプロパティ値を抽出し、新しいコレクションに格納して返します。
このコマンドは、元のコレクションを変更しません。
戻り値のコレクションの中身は、targetPath 引数によります:
-
targetPath が省略された場合、
.extract()
は元のコレクションの propertyPath と同じパスを使って、新しいコレクションに値を格納します。デフォルトでは、propertyPath のパスの要素が null あるいは undefined であった場合には、その要素は無視され、返されるコレクションに格納されません。 option パラメーターに
ck keep null
定数を渡すと、これらの要素は返されるコレクションに null 要素として格納されます。 -
一つ以上の propertyPath 引数に相当する、一つ以上の targetPath 引数が渡された場合、
.extract()
は元のコレクションの propertyPath から値を抽出し、合致する targetPath に値を保存したオブジェクトを新しいコレクションの各要素として格納します。 Null値はそのまま保持されます (このシンタックスでは option に引数を渡しても無視されます)。
例題 1
var $c : Collection
$c:=New collection
$c.push(New object("name";"Cleveland"))
$c.push(New object("zip";5321))
$c.push(New object("name";"Blountsville"))
$c.push(42)
$c2:=$c.extract("name") // $c2=[Cleveland,Blountsville]
$c2:=$c.extract("name";ck keep null) //$c2=[Cleveland,null,Blountsville,null]
例題 2
var $c : Collection
$c:=New collection
$c.push(New object("zc";35060))
$c.push(New object("name";Null;"zc";35049))
$c.push(New object("name";"Cleveland";"zc";35049))
$c.push(New object("name";"Blountsville";"zc";35031))
$c.push(New object("name";"Adger";"zc";35006))
$c.push(New object("name";"Clanton";"zc";35046))
$c.push(New object("name";"Clanton";"zc";35045))
$c2:=$c.extract("name";"City") //$c2=[{City:null},{City:Cleveland},{City:Blountsville},{City:Adger},{City:Clanton},{City:Clanton}]
$c2:=$c.extract("name";"City";"zc";"Zip") //$c2=[{Zip:35060},{City:null,Zip:35049},{City:Cleveland,Zip:35049},{City:Blountsville,Zip:35031},{City:Adger,Zip:35006},{City:Clanton,Zip:35046},{City:Clanton,Zip:35045}]
.fill()
履歴
リリース | 内容 |
---|---|
v16 R6 | 追加 |
.fill( value : any ) : Collection
.fill( value : any ; startFrom : Integer { ; end : Integer } ) : Collection
引数 | タイプ | 説明 | |
---|---|---|---|
value | number, Text, Collection, Object, Date, Boolean | -> | 代入する値 |
startFrom | Integer | -> | 開始インデックス (含まれる) |
end | Integer | -> | 終了インデックス (含まれない) |
戻り値 | collection | <- | 値が代入された元のコレクション |
説明
.fill()
関数は、コレクションを value 引数の値で満たし、同コレクションを返します。オプションとして、startFrom および end インデックスを渡して代入開始位置および終了位置を指定することもできます。
このコマンドは、元のコレクションを変更します。
- startFrom 引数が渡されなかった場合、value 引数の値はコレクションの全要素に代入されます (つまり、startFrom=0)。
- startFrom 引数が渡され、かつ end 引数が省略された場合には、value 引数の値はコレクションの最後の要素まで設定されます (つまり、end=length)。
- startFrom と end 引数が両方渡された場合には、startFrom から end までの要素に value が代入されます。
引数に矛盾がある場合、次のように解釈されます:
- startFrom < 0 の場合、startFrom:=startFrom+length として再計算されます (コレクションの終端からのオフセットであるとみな されます)。 再計算された値も負の値だった場合、startFrom は 0 に設定されます。
- end < 0 の場合、それは end:=end+length として再計算されます。
- 渡された値、あるいは再計算された値が end < startFrom の場合、関数はなにもしません。
例題
var $c : Collection
$c:=New collection(1;2;3;"Lemon";Null;"";4;5)
$c.fill("2") // $c:=[2,2,2,2,2,2,2,2]
$c.fill("Hello";5) // $c=[2,2,2,2,2,Hello,Hello,Hello]
$c.fill(0;1;5) // $c=[2,0,0,0,0,Hello,Hello,Hello]
$c.fill("world";1;-5) //-5+8=3 -> $c=[2,"world","world",0,0,Hello,Hello,Hello]
.filter()
履歴
リリース | 内容 |
---|---|
19 R6 | フォーミュラをサポート |
v16 R6 | 追加 |
.filter( formula : 4D.Function { ; ...param : any } ) : Collection
.filter( methodName : Text { ; ...param : any } ) : Collection
引数 | タイプ | 説明 | |
---|---|---|---|
formula | 4D.Function | -> | フォーミュラオブジェクト |
methodName | Text | -> | メソッド名 |
param | any | -> | formula または methodName に渡す引数 |
戻り値 | Collection | <- | フィルターされた要素を格納した新しいコレクション(シャロウ・コピー) |
説明
.filter()
関数は、元のコレクション要素のうち、formula または methodName の結果が true になる要素をすべて格納した新しいコレクションを返します。 この関数は シャロウ・コピー を返します。つまり、元のコレクションにオブジェクト要素やコレクション要素が含まれていた場合、それらの参照は戻り値のコレクションで共有されます。 また、元のコレクションが共有コレクションであった場合、返されるコレクションもまた共有コレクションになります。
このコマンドは、元のコレクションを変更しません。
次のいずれかを使用して、コレクション要素をフィルターするために実行されるコールバックを指定します:
- formula (推奨シンタックス)、関数やプロジェクトメソッドを含むあらゆる実行可能な式を格納できる Formula オブジェクト。
- または methodName、プロジェクトメソッドの名前 (テキスト)。
コールバックには、オブジェクトが 1番目の引数 ($1) として渡され、任意の param 引数がその後に続きます。 引数の有無にかかわらず、コールバックは任意のテストを実行でき、条件を満たす要素に対しては true を返すことで、新規コレクションにプッシュします。
コールバックは以下の引数を受け取ります:
- $1.value: 評価する要素の値
- $2: param
- $N...: paramN...
また、コールバックは以下のパラメーターを設定できます:
- $1.result (ブール): 要素の値がフィルター条件に合致する場合には true 、それ以外は false。
- $1.stop (ブール、任意): メソッドコールバックを止める場合には true。 返された値は最後に計算されたものです。
methodName に指定したメソッドをコールバックとして使用し、このメソッドが値を返さない場合、.filter()
は $1.result を調べます。この場合には、条件を満たす各要素に対して、$1.result を true に設定する必要があります。
例題 1
コレクションから、長さが 6未満であるテキスト要素を取得します:
var $col;$colNew : Collection
$col:=New collection("hello";"world";"red horse";66;"tim";"san jose";"miami")
$colNew:=$col.filter(Formula((Value type($1.value)=Is text) && (Length($1.value)<$2)); 6)
//$colNew=["hello","world","tim","miami"]
例題 2
値の型に応じて要素をフィルターします:
var $c;$c2;$c3 : Collection
var $f : 4D.Function
$f:=Formula(OB Get type($1;"value")=$2)
$c:=New collection(5;3;1;4;6;2)
$c.push(New object("name";"Cleveland";"zc";35049))
$c.push(New object("name";"Blountsville";"zc";35031))
$c2:=$c.filter($f;Is real) // $c2=[5,3,1,4,6,2]
$c3:=$c.filter($f;Is object)
// $c3=[{name:Cleveland,zc:35049},{name:Blountsville,zc:35031}]
.find()
履歴
リリース | 内容 |
---|---|
19 R6 | フォーミュラをサポート |
v16 R6 | 追加 |
.find( { startFrom : Integer ; } formula : 4D.Function { ; ...param : any } ) : any
.find( { startFrom : Integer ; } methodName : Text { ; ...param : any } ) : any
引数 | タイプ | 説明 | |
---|---|---|---|
startFrom | Integer | -> | 検索を開始するインデックス |
formula | 4D.Function | -> | フォーミュラオブジェクト |
methodName | Text | -> | メソッド名 |
param | any | -> | formula または methodName に渡す引数 |
戻り値 | any | <- | 最初に見つかった値。見つからなかった場合には Undefined |
説明
.find()
関数は、formula 引数のフォーミュラまたは methodName 引数のメソッドを各コレクション要素に適用して、true を返す最初の要素を返します。
このコマンドは、元のコレクションを変更しません。
次のいずれかを使用して、コレクション要素を評価するために実行されるコールバックを指定します:
- formula (推奨シンタックス)、関数やプロジェクトメソッドを含むあらゆる実行可能な式を格納できる Formula オブジェクト。
- または methodName、プロジェクトメソッドの名前 (テキスト)。
コールバックには、param (任意) に指定した引数が渡されます。 引数の有無にかかわらず、コールバックは任意のテストを実行でき、条件を満たす最初の要素に対して true を返さなくてはなりません。 コールバックは最初のパラメーター ($1) に Object
を受け取ります。
コールバックは以下の引数を受け取ります:
- $1.value: 評価する要素の値
- $2: param
- $N...: paramN...
また、コールバックは以下のパラメーターを設定できます:
- (メソッドを使用する場合は必須) $1.result (ブール): 要素の値が検索条件に合致する場合には true 、それ以外は false。
- $1.stop (ブール、任意): メソッドコールバックを止める場合には true。 返された値は最後に計算されたものです 。
デフォルトでは、.find()
はコレクション全体をテストします。 任意で、startFrom に検索を開始する要素のインデックスを渡すこともできます。
- startFrom がコレクションの length 以上だった場合、-1 が返されます。これはコレクションが検索されていないことを意味します。
- startFrom < 0 の場合には、コレクションの終わりからのオフセットであるとみなされます (startFrom:=startFrom+length)。 注: startFrom が負の値であっても、コレクションは左から右へと検索されます。
- startFrom = 0 の場合、コレクション全体がテストされます (デフォルト)。
例題 1
長さが 5未満の最初のテキスト要素を取得します:
var $col : Collection
$col:=New collection("hello";"world";4;"red horse";"tim";"san jose")
$value:=$col.find(Formula((Value type($1.value)=Is text) && (Length($1.value)<$2)); 5) //$value="tim"
例題 2
コレクション内を都市名で検索します:
var $c : Collection
var $c2 : Object
$c:=New collection
$c.push(New object("name"; "Cleveland"; "zc"; 35049))
$c.push(New object("name"; "Blountsville"; "zc"; 35031))
$c.push(New object("name"; "Adger"; "zc"; 35006))
$c.push(New object("name"; "Clanton"; "zc"; 35046))
$c.push(New object("name"; "Clanton"; "zc"; 35045))
$c2:=$c.find(Formula($1.value.name=$2); "Clanton") //$c2={name:Clanton,zc:35046}
.findIndex()
履歴
リリース | 内容 |
---|---|
19 R6 | フォーミュラをサポート |
v16 R6 | 追加 |
.findIndex( { startFrom : Integer ; } formula : 4D.Function { ; ...param : any } ) : Integer
.findIndex( { startFrom : Integer ; } methodName : Text { ; ...param : any } ) : Integer
引数 | タイプ | 説明 | |
---|---|---|---|
startFrom | Integer | -> | 検索を開始するインデックス |
formula | 4D.Function | -> | フォーミュラオブジェクト |
methodName | Text | -> | メソッド名 |
param | any | -> | formula または methodName に渡す引数 |
戻り値 | Integer | <- | 最初に見つかった値のインデックス。見つからなかった場合には -1 |
説明
.findIndex()
関数は、formula 引数のフォーミュラまたは methodName 引数のメソッドを各コレクション要素に適用して、true を返す最初の要素のインデックスを返します。
このコマンドは、元のコレクションを変更しません。
次のいずれかを使用して、コレクション要素を評価するために実行されるコールバックを指定します:
- formula (推奨シンタックス)、関数やプロジェク トメソッドを含むあらゆる実行可能な式を格納できる Formula オブジェクト。
- methodName、プロジェクトメソッドの名前 (テキスト)。
コールバックには、param (任意) に指定した引数が渡されます。 引数の有無にかかわらず、コールバックは任意のテストを実行でき、条件を満たす最初の要素に対して true を返さなくてはなりません。 コールバックは最初のパラメーター ($1) に Object
を受け取ります。
コールバックは以下の引数を受け取ります:
- $1.value: 評価する要素の値
- $2: param
- $N...: paramN...
また、コールバックは以下のパラメーターを設定できます:
- (メソッドを使用する場合は必須) $1.result (ブール): 要素の値が検索条件に合致する場合には true 、それ以外は false。
- $1.stop (ブール、任意): メソッドコールバックを止める場合には true。 返された値は最後に計算されたものです。
デフォルトでは、.findIndex()
はコレクション全体をテストします。 任意で、startFrom に検索を開始する要素のインデックスを渡すこともできます。
- startFrom がコレクションの length 以上だった場合、-1 が返されます。これはコレクションが検索されていないことを意味します。
- startFrom < 0 の場合には、コレクションの終わりからのオフセットであるとみなされます (startFrom:=startFrom+length)。 注: startFrom が負の値であっても、コレクションは左から右へと検索されます。
- startFrom = 0 の場合、コレクション全体がテストされます (デフォルト)。
例題
コレクション内で最初に合致する都市名の位置を探します:
var $c : Collection
var $val2;$val3 : Integer
$c:=New collection
$c.push(New object("name";"Cleveland";"zc";35049))
$c.push(New object("name";"Blountsville";"zc";35031))
$c.push(New object("name";"Adger";"zc";35006))
$c.push(New object("name";"Clanton";"zc";35046))
$c.push(New object("name";"Clanton";"zc";35045))
$val2:=$c.findIndex(Formula($1.value.name=$2);"Clanton") // $val2=3
$val3:=$c.findIndex($val2+1;Formula($1.value.name=$2);"Clanton") //$val3=4
.first()
履歴
リリース | 内容 |
---|---|
20 | 追加 |
.first() : any
引数 | タイプ | 説明 | |
---|---|---|---|
戻り値 | any | <- | コレクションの先頭要素 |
説明
.first()
関数は、コレクションの先頭要素を返します。
このコマンドは、元のコレクションを変更しません。
コレクションが空の場合、この関数は undefined を返します。
例題
var $col; $emptyCol : Collection
var $first : Variant
$col:=New collection(10; 20; 30; "hello"; 50)
$first:=$col.first() // 10
$emptyCol:=New collection() // 空のコレクション
// $first:=$emptyCol[0] // このコードはエラーを返します
$first:=$emptyCol.first() // このコードは undefined を返します
.flat()
履歴
リリース | 内容 |
---|---|
20 | 追加 |
.flat( { depth : Integer } ) : Collection
引数 | タイプ | 説明 | |
---|---|---|---|
depth | Integer | -> | ネストされたコレクションの階層をどの範囲まで平坦化するか。 デフォルト = 1 |
戻り値 | Collection | <- | 平坦化されたコレクション |
説明
.flat()
関数は、depth に指定した階層の深さまで、すべてのサブコレクション要素を再帰的に連結した新しいコレクションを作成します。
depth が省略された場合のデフォルトでは、コレクション階層の一つ目のレベルのネストのみが解除されます。
このコマンドは、元のコレクションを変更しません。
例題
$col:=New collection(1; 2; New collection(3; 4))
$col.flat()
// [1, 2, 3, 4]
$col:=New collection(1; 2; New collection(3; 4; New collection(5; 6)))
$col.flat() // $col.flat(1) と同じ
// [1, 2, 3, 4, [5, 6]]
$col:=New collection(1; 2; New collection(3; 4; New collection(5; 6)))
$col.flat(2)
// [1, 2, 3, 4, 5, 6]
$col:=New collection(1; 2; New collection(3; 4; 5; 6; New collection(7; 8; New collection(9; 10))))
$col.flat(MAXLONG)
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
.flatMap()
履歴
リリース | 内容 |
---|---|
20 | 追加 |
.flatMap( formula : 4D.Function { ; ...param : any } ) : Collection
.flatMap( methodName : Text { ; ...param : any } ) : Collection
引数 | タイプ | 説明 | |
---|---|---|---|
formula | 4D.Function | -> | フォーミュラオブジェクト |
methodName | Text | -> | メソッド名 |
param | any | -> | formula または methodName に渡す引数 |
戻り値 | Collection | <- | 変換された値を格納し、1レベルのネストが解除された新しいコレクション |
説明
.flatMap()
関数は、元のコレクションの各要素に対して formula または methodName を呼び出した結果に基づき、1レベルのネストが解除された新しいコレクションを作成します。 オプションで、param パラメーターに、formula または methodName に渡す引数を指定することができます。
この機能は、map()
の呼び出し後に、depth = 1 で flat()
を呼び出すのと同じです。
このコマンドは、元のコレクションを変更しません。
次のいずれかを使用して、コレクション要素を評価するために実行されるコールバックを指定します:
- formula (推奨シンタッ クス)、関数やプロジェクトメソッドを含むあらゆる実行可能な式を格納できる Formula オブジェクト。
- または methodName、プロジェクトメソッドの名前 (テキスト)。
コールバックには、param (任意) に指定した引数が渡されます。 引数の有無にかかわらず、コールバックは任意の処理を実行でき、結果のコレクションに追加する変換後の新しい値を返さなくてはなりません。 コールバックは最初のパラメーター ($1) に Object
を受け取ります。
コールバックは以下の引数を受け取ります:
- $1.value: 評価する要素の値
- $2: param
- $N...: paramN...
また、コールバックは以下のパラメーターを設定できます:
- (メソッドを使用した場合は必須) $1.result (任意の型): 結果のコレクションに追加する、変換された値
- $1.stop (ブール、任意): メソッドコールバックを止める場合には true。 返された値は最後に計算されたものです。
例題 1
var $col ; $result : Collection
$col:=New collection(1; 2; 3; 4)
$result:=$col.map(Formula(New collection($1.value*2))
// [[2],[4],[6],[8]]
$result:=$col.flatMap(Formula(New collection($1.value*2))
// [2,4,6,8]
例題 2
var $col; $result : Collection
$col:=New collection("Hello how"; ""; "are you ?")
$result:=$col.map(Formula(Split string($1.value; " ")))
// [["Hello", "how"], [], ["are", "you", "?"]]
$result:=$col.flatMap(Formula(Split string($1.value; " ")))
// ["Hello", "how", "are", "you", "?"]
例題 3
コレクションに含まれる各値の合計に対する割合を計算します:
var $c; $c2 : Collection
var $f : 4D.Function
$c:=New collection(1; 4; 9; 10; 20)
$f:=Formula(New collection($1.value;Round(($1.value/$2)*100; 2)))
$c2:=$c.flatMap($f; $c.sum())
//$c2=[1, 2.27, 4, 9.09,9, 20.45,10, 22.73, 20, 45.45]
.includes()
履歴
リリース | 内容 |
---|---|
20 | 追加 |
.includes( toSearch : expression { ; startFrom : Integer } ) : Boolean
引数 | タイプ | 説明 | |
---|---|---|---|
toSearch | 式 | -> | コレクション内を検索する式 |
startFrom | Integer | -> | 検索を開始するインデックス |
戻り値 | Boolean | <- | toSearch がコレクションにある場合は true。 |
説明
.includes()
関数は、toSearch に指定した式がコレクション内で見つかれば true を、そうでなければ false を返します。
このコマンドは、元のコレクションを変更しません。
toSearch パラメーターには、コレクション内で検索する式を渡します。 以下のものを渡すことができます:
- スカラー値 (テキスト、数値、ブール、日付)
- null 値
- オブジェクトあるいはコレクションの参照
toSearch 引数は検出すべき要素と完全に一致している必要があ ります (等号演算子と同じルールが適用されます)。
オプションとして、startFrom 引数を渡すことで、検索を開始するコレクション要素のインデックスを指定することができます。
- startFrom がコレクションの length 以上だった場合、false が返されます。これはコレクションが検索されていないことを意味します。
- startFrom < 0 の場合には、コレクションの終わりからのオフセットであるとみなされます (startFrom:=startFrom+length)。 なお、startFrom が負の値であっても、コレクションは左から右へと検索されます。
- startFrom = 0 の場合、コレクション全体がテストされます (デフォルト)。
例題
var $col : Collection
var $in : Boolean
var $obj : Object
$obj:=New object("value"; 10)
$col:=New collection(1;2;"Henry";5;3;"Albert";6;4;"Alan";5;$obj)
$in:=$col.includes(3) //True
$in:=$col.includes(5;6) //True
$in:=$col.includes("al@") //True
$in:=$col.includes("Hello") //False
$in:=$col.includes($obj) //True
$in:=$col.includes(New object("value"; 10)) //False
.indexOf()
履歴
リリース | 内容 |
---|---|
v16 R6 | 追加 |
.indexOf( toSearch : expression { ; startFrom : Integer } ) : Integer
引数 | タイプ | 説明 | |
---|---|---|---|
toSearch | 式 | -> | コレクション内を検索する式 |
startFrom | Integer | -> | 検索を開始するインデックス |
戻り値 | Integer | <- | 最初に見つかった toSearch のインデックス。見つからなかった場合には -1 |
説明
.indexOf()
関数は、 toSearch 引数の式をコレクション要素の中から検索し、最初に見つかった要素のインデックス (見つからなかった場合には -1) を返します。
このコマンドは、元のコレクションを変更しません。
toSearch パラメーターには、コレクション内で検索する式を渡します。 以下のものを渡すことができます:
- スカラー値 (テキスト、数値、ブール、日付)
- null 値
- オブジェクトあるいはコレクションの参照
toSearch 引数は検出すべき要素と完全に一致している必要があります (等号演算子と同じルールが適用されます)。
オプションとして、startFrom 引数を渡すことで、検索を開始するコレクション要素のインデックスを指定することができます。
- startFrom がコレクションの length 以上だっ た場合、-1 が返されます。これはコレクションが検索されていないことを意味します。
- startFrom < 0 の場合には、コレクションの終わりからのオフセットであるとみなされます (startFrom:=startFrom+length)。 注: startFrom が負の値であっても、コレクションは左から右へと検索されます。
- startFrom = 0 の場合、コレクション全体がテストされます (デフォルト)。
例題
var $col : Collection
var $i : Integer
$col:=New collection(1;2;"Henry";5;3;"Albert";6;4;"Alan";5)
$i:=$col.indexOf(3) //$i=4
$i:=$col.indexOf(5;5) //$i=9
$i:=$col.indexOf("al@") //$i=5
$i:=$col.indexOf("Hello") //$i=-1
.indices()
履歴
リリース | 内容 |
---|---|
v16 R6 | 追加 |
.indices( queryString : Text { ; ...value : any } ) : Collection
引数 | タイプ | 説明 | |
---|---|---|---|
queryString | Text | -> | 検索条件 |
value | any | -> | プレースホルダー使用時: 比較する値 |
戻り値 | Collection | <- | queryString に合致するコレクション要素のインデックス |
説明
.indices()
関数は .query()
関数と同様に機能しますが、queryString 引数の検索条件に合致する、元のコレクション要素のインデックスを返します(コレクション要素自体は返しません)。 インデックスは、昇順に返されます。
このコマンドは、元のコレクションを変更しません。
queryString 引数には、以下のシンタックスを使用します:
propertyPath 比較演算子 値 {logicalOperator propertyPath 比較演算子 値}
queryString および value パラメーターの詳細については、dataClass.query()
関数を参照ください。