对集合中的所有元素执行语句块
FOREACH [IMPLIED <idElement> | VAR <idElement> | <idElement> AS <idType>] IN <container>
<Statements>...
[EXIT]
<Statements>...
[LOOP]
NEXT
在 FoxPro 方言中,也允许使用 FOR EACH 作为两个单独的单词。
在 FoxPro 和 Xbase++ 方言中,ENDFOR 可作为 NEXT 的替代词。
<idElement> | 将接收 <container> 中元素值的变量名。当使用 IMPLIED 或 VAR 子句时,变量的数据类型将从容器中推断出来。使用 AS <idType> 子句时,这将是变量的数据类型 |
AS <idType> | 指定数据类型。如果省略,编译器依据编译选项来决定数据类型,或者是 USUAL,或者是由编译器自行决定。 |
<container> | 支持 IEnumerable() 的 DotNet 对象,如 XBase 数组、.Net 数组或 List<> 等集合 |
EXIT | 无条件地跳出 FOR、FOREACH、REPEAT 或 DO WHILE 循环,执行 ENDDO 或 NEXT 语句之后的语句。 |
LOOP | 将控制转移到最近执行的 FOR、FOREACH、REPEAT 或 DO WHILE 语句。 |
FOREACH 语句是枚举数组或集合中变量的便捷方法。
最好不要在循环内更改迭代变量。如果这样做,编译器会发出警告。
此外,也不建议在循环中更改容器,因为这通常会导致运行时错误。
AEval(), BEGIN SEQUENCE, DO CASE, DO WHILE, IF, EXIT, LOOP