FOREACH
Ejecuta un bloque para cada uno de varios puntos o valores.
Sintaxis
FOREACH name IN [first..last] BEGIN … END
FOREACH name IN [point,point,…] BEGIN … END
FOREACH name IN value,value,… BEGIN … END
FOREACH name IN list BEGIN … END
FOREACH name IN dictionary BEGIN … END
| Argumento | Significado |
|---|---|
| name | La variable que toma cada elemento por turno. |
| [first..last] | Una serie de puntos, como [P0..P3]: name es la posición de cada uno. |
| [point,point,…] | Varios puntos, como [P0,P2]: name es la posición de cada uno. |
| value,value,… | Varias expresiones, cada una calculada cuando empieza el bucle: números, posiciones, cadenas. |
| list | Una lista, como {10,20,40} o una variable que contenga una: name es cada elemento. |
| dictionary | Un diccionario: name es cada clave (dictionary[name] su valor). |
DO puede ir antes de BEGIN.
Ejemplos
FOREACH Q IN [P0..P3] BEGIN
R = Q + [20, 0]
CIRCLE R, Q, TRUE
END

Un círculo de radio 20 en cada esquina de la caja, que sigue a las esquinas cuando se mueven.
FOREACH S IN 10, 20, 40 BEGIN
P10 = [L / 2, W / 2]
P11 = P10 + [S, 0]
CIRCLE P11, P10, TRUE
END
Tres círculos alrededor del centro de la caja, de radio 10, 20 y 40.
HOLES={"small":5,"large":12}
FOREACH K IN HOLES BEGIN
P10 = [HOLES[K] * 10, 50]
P11 = P10 + [HOLES[K], 0]
CIRCLE P11, P10, TRUE
END
Un agujero por cada entrada de un diccionario, con el valor de la entrada como radio.
Notas
Se usa una posición donde un elemento espera un punto por su nombre: CIRCLE R, Q, TRUE arriba es un círculo que pasa por R
con centro en Q.
BREAK sale del bucle; CONTINUE pasa al elemento siguiente.
Véase también: Bloques y control de flujo, FOR.