Después de buscar este problema exacto, encontré este book extract en línea. Responde exactamente a la pregunta de cómo omitir la iteración actual y pasar directamente a la siguiente iteración de un ciclo repeat
.
Applescript tiene exit repeat
, que terminará por completo un bucle, omitiendo todas las iteraciones restantes. Esto puede ser útil en un ciclo infinito, pero no es lo que queremos en este caso.
parecer una característica continue
-como no existe en AppleScript, pero aquí es un truco para simular que:
set aList to {"1", "2", "3", "4", "5"}
repeat with anItem in aList -- # actual loop
repeat 1 times -- # fake loop
set value to item 1 of anItem
if value = "3" then exit repeat -- # simulated `continue`
display dialog value
end repeat
end repeat
Esto mostrará los cuadros de diálogo para 1, 2, 4 y 5.
Aquí, ha creado dos bucles: el bucle externo es su bucle real, el bucle interno es un bucle que se repite solo una vez. El exit repeat
saldrá del bucle interno, continuando con el bucle externo: ¡exactamente lo que queremos!
Obviamente, si utiliza esto, perderá la capacidad de hacer un exit repeat
normal.
El código anterior no se compilará porque los comentarios en applescript son - no # – alexy13
En applescript 2.0, el signo # también está permitido para comentarios: https://developer.apple.com/library/mac/documentation/applescript/ conceptual/applescriptlangguide/conceptual/ASLR_lexical_conventions.html # // apple_ref/doc/uid/TP40000983-CH214-SW8 – Joakim
El código se compilaría de todos modos porque "-" precede a todo el "#" y "-" siempre ha marcado un comentar en AppleScript. –