ListNext
Synopsis
ListNext(list,ptr,value)
パラメータ
list | 有効なリストに評価する式。Caché list は、ListBuild、または ListFromString を使用して作成するか、List を使用して別のリストから抽出する必要があります。 |
ptr | リスト内の次の要素に対するポインタ。ptr は、list の先頭を指し示すよう、0 に初期化されたローカル変数として指定する必要があります。Caché は、内部のアドレス値アルゴリズム (予測可能な整数カウンタではない) を使用して ptr をインクリメントします。したがって、ptr の設定に使用できる値は 0 のみです。ptr をグローバル変数および添え字付き変数にすることはできません。 |
value | リスト要素のデータ値の保持に使用されるローカル変数。ListNext を呼び出す前に value を初期化する必要はありません。value をグローバル変数および添え字付き変数にすることはできません。 |
説明
ListNext は、list 内の要素を順番に返します。ユーザは、ListNext の初回呼び出しの前に、ptr を 0 に初期化します。これにより、ListNext はリストの先頭から要素を返し始めます。ListNext の連続する呼び出しごとに ptr が進められ、次のリストの要素値が value に返されます。ListNext 関数は 1 を返し、リスト要素の取得に成功したことを示します。
ListNext がリストの最後に到達したときは、0 を返し、ptr を 0 にリセットします。value は前の呼び出しから変更されません。ptr は 0 にリセットされているので、ListNext の次回の呼び出しは、list の最初から開始されます。
Caché Basic は、内部のアドレス・アルゴリズムを使用して ptr をインクリメントします。そのため、ptr に設定できる値は 0 のみです。
ListValid を使用すると、list が有効なリストかどうかを判定できます。無効なリストの場合、ListNext で <LIST> エラーが発生します。
ListValid で検証されたすべてのリストが ListNext と共に正常に使用できるわけではありません。ListNext が NULL 値を持つリスト要素を検出すると、1 を返します。これは、リスト要素の取得が成功し、ptr を次の要素に進め、value 値を未定義の変数にリセットすることを示します。これは、有効なリスト (value=ListBuild()、value=ListBuild(NULL)、value=ListBuild(,)) で発生したり、value=ListBuild("a",,"b") の ListNext の 2 つ目の呼び出しなど、省略されたリスト要素の検出時に発生する場合があります。
ListNext("",ptr,value) は 0 を返し、ポインタを進めたり value を設定することはありません。ListNext(ListBuild(""),ptr,value) は 1 を返し、ポインタを進め、value を NULL 文字列 ("") に設定します。
ListNext と入れ子のリスト
以下の例は、ListNext が入れ子になっているリストの個々の要素を認識しないため、3 つの要素を返します。
mylist = ListBuild("Apple","Pear",ListBuild("Walnut","Pecan"))
ptr = 0
count = 0
While ListNext(mylist,ptr,value)
count=count+1
PrintLn value
Wend
PrintLn "End of list: ",count," elements found"
例
以下の例は、リスト内のすべての要素を順番に返します。
mylist = ListBuild("Red","Blue","Green")
ptr = 0
count = 0
While ListNext(mylist,ptr,value)
count = count+1
PrintLn value
Wend
PrintLn "End of list: ",count," elements found"
関連項目
-
List 関数
-
ListBuild 関数
-
ListExists 関数
-
ListFind 関数
-
ListGet 関数
-
ListLength 関数
-
ListSame 関数
-
ListToString 関数
-
ListValid 関数