> Damian Conway wrote:
> 
> > push @moves, [$i, $j];
> > for 0..6 -> $t {
> >     if abs(@new[$t] - @new[$t+1]) > 3 {
> >         pop @moves;
> >         last;
> >     }
> > }


Thomas Seiler writes:

> my $is_ok = 1;
> for 0..6 -> $t {
>     if abs(@new[$t] - @new[$t+1]) > 3 {
>         $is_ok = 0;
>         last;
>     }
> }
> if $is_ok {
>     yada()  # has sideeffects...
> }


Ironically, this flow control problem was solved many years ago indeed,
and with considerable elegance. To wit:

    my $is_ok = 1;
    for 0..6 -> $t {
        if abs(@new[$t] - @new[$t+1]) > 3 {
            goto SKIP_YADA;
        }
    }
    
    yada();
  SKIP_YADA:

Yeah, so I'm a trouble-maker. Sorry: I don't consider downwards,
scope-escaping goto to be harmful.

Does this cause a bit less heartburn?

  YADA: {
        my $is_ok = 1;
        for 0..6 -> $t {
            if abs(@new[$t] - @new[$t+1]) > 3 {
                break YADA;
            }
        }
        
        yada();
    }

Loop controls are just goto in disguise, anyhow.

--
 
Gordon Henriksen
IT Manager
ICLUBcentral Inc.
[EMAIL PROTECTED]> 


Reply via email to