Thread Rating:
  • 1 Vote(s) - 2 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Break from Nested Loops
#1
Is there an elegant way to break from nested loops to 'outer' loop (or even to top-level loop if multiply nested). I know you could use goto statement but I try to avoid as much as possible in my program because it feels messy.
I am okay if there is no better answer Big Grin
Thanks,
S

Macro Macro132
Code:
Copy      Help
ARRAY(str) arr1 = "1[]2[]3[]4[]5[]6"
ARRAY(str) arr2 = "A[]B[]C[]D[]E"

int r
for _i 0 arr1.len
,;out F"{_i}: '{arr1[_i]}'"
,for r 0 arr2.len
,,if arr2[r] = "C"
,,,break;;want to break out of outer loop here as well instead of using goto statement
,,,;goto g1
,,out F"{_i}: '{arr1[_i]}' : {r}: {arr2[r]}"
,out "---------"

;g1
#2
Macro Break FOR Loop 1
Code:
Copy      Help
;Go to the outer loop
out
ARRAY(str) arr1 = "1[]2[]3[]4[]5[]6"
ARRAY(str) arr2 = "A[]B[]C[]D[]E"
int r
for _i 0 arr1.len
,for r 0 arr2.len
,,if arr2[r] = "C"
,,,r = arr2.len
,,else
,,,out F"{_i}: '{arr1[_i]}' : {r}: {arr2[r]}"
,out "--------------"

out "Done!"

Macro Break FOR Loop 2
Code:
Copy      Help
;Go to the top-level loop
out
ARRAY(str) arr1 = "1[]2[]3[]4[]5[]6"
ARRAY(str) arr2 = "A[]B[]C[]D[]E"
int r
for _i 0 arr1.len
,for r 0 arr2.len
,,if arr2[r] = "C"
,,,r = arr2.len
,,,_i = arr1.len
,,else
,,,out F"{_i}: '{arr1[_i]}' : {r}: {arr2[r]}"
,out "--------------"

out "Done!"
 
Code:
Copy      Help
 
#3
Pure elegance!
Thanks so much!
S


Forum Jump:


Users browsing this thread: 1 Guest(s)