collection.find( ) メソッドは、methodName 引数を各要素に適用して、true を返すコレクション内の最初の値を返します。
注: このメソッドは元のコレクションは変更しません。
デフォルトでは、collection.find( ) はコレクション全体を検索します。オプションとして、startFrom 引数に検索を開始する要素のインデックスを渡すこともできます。
- startFrom がコレクションのlength 以上の場合、-1 が返されます。これは検索が開始しなかったことを意味します。
- startFrom が負の値の場合、それはコレクションの終端からのオフセットであるとみなされます(startFrom:=startFrom+length)。
注: startFrom が負の値であっても、コレクションは左から右へと検索がされます。 - startFrom が0 の場合、コレクション全体が検索されます(デフォルト)。
methodName 引数には、コレクションの要素を評価するのに使用するメソッドの名前を渡します。必要であればparam 引数(任意)に引数を渡します。methodName 引数で指定したメソッドはどのようなテストでも実行でき、引数を使用してもしなくても構いません。メソッドは$1 にObject 引数を引き受け、条件を満たす最初の要素の$1.result をtrue に設定しなければなりません。
methodName 引数は以下の引数を受け取ります:
- $1.value: 評価する要素の値
- $2: param
- $N...: param2...paramN
methodName 引数は以下の引数を設定します:
- $1.result (ブール): 要素の値が検索条件に合致する場合にはtrue。
- $1.stop (ブール、任意): メソッドコールバックを中止する場合にはtrue。返された値は最後に計算されたものになります。
lengthが5未満の最初の要素を取得したい場合を考えます:
LengthLessThan メソッドのコードは以下のようになります:
C_OBJECT($1)
C_LONGINT($2)
If(Value type($1.value)=Is text)
$1.result:=(Length($1.value))<$2
End if
コレクション内で都市名を検索したい場合を考えます:
FindCity メソッドのコードは以下のようになります:
C_OBJECT($1)
C_TEXT($2)
$1.result:=$1.value.name=$2