Cyklus for i Perl

I programmeringssproget Perl der er flere måder at lave en løkke. En af måder er at bruge søgeord for.

Her er et eksempel:

▶ Run
#!/usr/bin/perl

for (my $i=0; $i < 3; $i++) {
    print "$i\n";
}

Programmet viser tre linjer med tal:

0
1
2

Hvordan tager cyklen for

Cyklus for i programmeringssproget Perl er meget lig den cyklus forsprog C programmering.

Efter for i parentes 3 er et kodestykke:

  • den oprindelige værdi
  • check
  • skift

For det første køre den første kodeuddrag. Så check for en sand eller falsk i den anden kodestykke. Hvis valideringen returnerer true, det udfører den loop kroppen, hvis testen returnerer falsk, så løkken afsluttes. Hvis du kørte kroppen af løkken, efter at udføre kode i loop kroppen eksekveres i det tredje stykke, derefter en check er lavet igen, og alt foregår i henhold til de allerede beskrevne algoritme.

Det er muligt den situation kroppen af løkken vil ikke blive gennemført endnu en gang. Dette sker hvis den første kontrol returnerer false.

Den manglende værdier

Et interessant træk ved cyklen er, at enhver kodestykke på den beskrivelse af denne cyklus kan du ikke være.

Her er et eksempel på en cyklus, der er ikke set den oprindelige værdi:

▶ Run
#!/usr/bin/perl

my $i = 0;

for (; $i < 3; $i++) {
    print "$i\n";
}

I tilfældet, hvis den beskrivelse af denne cyklus for testen er ikke tilgængelig, det skaber en uendelig løkke. Her er et eksempel på en cyklus for , der præciserer ikke, validering, men stadig denne cyklus sluttede udvandrede i kroppen af løkken og bruges last.

▶ Run
#!/usr/bin/perl

for (my $i=0;; $i++) {
    last unless $i < 3;
    print "$i\n";
}

I beskrivelsen af den cyklus af tredje fragment, der også kan være manglende:

▶ Run
#!/usr/bin/perl

for (my $i=0; $i < 3;) {
    print "$i\n";
    $i++;
}

Hvis der i en løkke til at slette alle de fragmenter, vil det skabe en uendelig løkke:

#!/usr/bin/perl

for (;;) {
    print "infinity\n";
}

Synligheden af en variabel

I dette tilfælde, hvis variablen er defineret i beskrivelsen af loop uden for løkken, denne variabel vil ikke være til rådighed. I tilfælde af at koden er use strict;, så er en sådan appel vil mislykkes.

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

for (my $i=0; $i < 3; $i++) {
    print "$i\n";
}

print $i;
Global symbol "$i" requires explicit package name (did you forget to declare "my $i"?) at script.pl line 10.
Execution of script.pl aborted due to compilation errors.

Hvis du har brug for at bruge en variabel, der tæller uden for løkken krop, du er nødt til at finde ud af det beskrivelse af cyklus:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $i = 0;

for (; $i < 3; $i++) {
    print "$i\n";
}

print $i;

next og last

I Perl der er særlige søgeord, som du kan bruge til at påvirke udførelsen af løkken.

Søgeord next stopper udførelse af den nuværende iteration:

▶ Run
#!/usr/bin/perl

for (my $i=0; $i < 3; $i++) {
    next if $i == 0;
    print "$i\n";
}

Og med hjælp af last til enhver tid at fuldføre cyklus:

▶ Run
#!/usr/bin/perl

for (my $i=0; $i < 3; $i++) {
    last if $i == 1;
    print "$i\n";
}

Relaterede emner

Andre artikler