On Monday, October 24, 2016, Angel de Vicente < angel.vicente.garr...@gmail.com> wrote:
> Hi, > > I don't see it in the documentation, but I'm wondering if there is a way > to have named nested loops, so that one can specify those names to break > and continue, in order to have more control. > > In the following examples, continue always skips the remaining loop for > j, while break terminates the j loop in the first example and terminates > the single outer loop in the second (I guess it can be a bit confusing > at first, but I can understand the design). > > ,---- > | println("nested") > | for i in 1:3 > | for j in 1:6 > | if 2 < j < 4 continue end > | if j > 5 break end > | @printf("i: %i j: %i \n",i,j) > | end > | end > | > | println("single outer loop") > | for i in 1:3, j in 1:6 > | if 2 < j < 4 continue end > | if j > 5 break end > | @printf("i: %i j: %i \n",i,j) > | end > `---- > > But I'm used to Fortran, where one can do things like this (CYCLE == > continue ; EXIT == break), and you specify the loop that the instruction > applies to. > > ,---- > | INA: DO a = 1,1000 > | INB: DO b=a+1,1000 > | IF (a+b .GT. 1000) CYCLE INA > | INC: DO c=b+1,1000 > | IF (a+b+c .GT. 1000) CYCLE INB > | IF (a+b+c .EQ. 1000 .AND. a**2 + b**2 .EQ. c**2) THEN > | PRINT*, a*b*c > | EXIT INA > | END IF > | END DO INC > | END DO INB > | END DO INA > `---- > > > Is it possible now (or in the near future) to have named nested loops in > Julia? No, and I'm not aware of any plan to support this. But you can create custom control flow with '@goto', so it could be probably be done with a macro. > > Thanks, > -- > Ángel de Vicente > http://www.iac.es/galeria/angelv/ >