LOTUSSCRIPT 言語
配列、リスト、またはコレクションの要素ごとにブロックステートメントを繰り返し実行します。コレクションとは、製品コレクションクラスまたは OLE コレクションクラスのインスタンスです。
メモ ForAll ステートメントは Product のコレクションに対して機能しますが、Notes のコレクションはサポートしません。
構文 ForAll refVar In container
[ statements ]
End ForAll
構成要素 refVar
メモ 配列の配列に対して ForAll を使うときは、イテレータを ReDim しないでください。「無効な ReDim」エラーが発生します。
ループを早期に終了する Exit ForAll ステートメントや GoTo ステートメントでループが終了する前に、強制的に終了できます。Exit ForAll に到達すると、実行はすぐにループのターミネータ (End ForAll) に続く最初のステートメントに移ります。GoTo ステートメントに到達すると、実行はすぐに指定されたラベルのあるステートメントに移ります。
refVar を使用する refVar は実際の配列、リスト、またはコレクションの要素の別名なので、refVar に新しい値を代入することでその要素の値を変更できます。次に例を示します。
ForAll x In y x = x + 1 End ForAll
このスクリプトは、y という名前の配列、リスト、またはコレクションの各要素の値に 1 を加えます。
container がリストの場合、refVar が現在参照しているリスト要素の名前 (リストタグ) を得るために refVar を ListTag 関数に渡せます。次に例を示します。
Print ListTag(refVar)
refVar は ForAll ステートメントで暗黙に定義されるので、独自の変数宣言には含められません。refVar のスコープはループなので、ループの外側からは参照できません。
container が配列やリストの場合、refVar のデータ型は処理されている配列やリストのデータ型と同じです。このデータ型をコンパイル時に判別できないときや、container がコレクションのときは、refVar は Variant 型です。その場合、Variant 型にはユーザー定義データ型の値を代入できないので、配列やリストのデータ型にユーザー定義データ型を使えません。
refVar は、後の ForAll ループで、refVar が最初定義された ForAll ループ内で使われた内容のデータ型と一致すると再利用されます。
参照変数には ReDim ステートメントを使えません。たとえば、zArr が配列の配列で、ForAll ステートメントが次のように始まると仮定します。
ForAll inzArr In zArr
この場合、ステートメント ReDim inzArr(2) はエラーとなります。
クロスリファレンス 式言語の @Transform 関数
例 関連項目