X++-løkkesetninger

Bemerkning

Interessegrupper i fellesskapet har nå flyttet fra Yammer til Microsoft Viva Engage. Hvis du vil bli med i et Viva Engage-fellesskap og delta i de siste diskusjonene, fyller du ut skjemaet Be om tilgang til Finance and Operations Viva Engage Community og velger fellesskapet du vil bli med i.

Denne artikkelen beskriver løkkesetninger i X++.

Det finnes tre løkkesetninger: for, mens, og gjør ... mens. En løkke gjentar setningen til betingelsen du angir for løkken, er usann. I løkkesetningene kan du bruke pause og fortsette setninger.

for løkker

Syntaksen for en for løkke er:

for (initialisering;test;intervaller) {statement}

For løkken utfører setningen gjentatte ganger så lenge den betingede uttrykkstesten er sann. setningen kan være en blokk med setninger. Brødteksten i for løkken (setningen) kan kjøres null eller flere ganger, avhengig av testresultatene.

A for løkke skiller seg fra andre løkker fordi du kan tilordne en startverdi til en kontrollvariabel, og fordi det finnes en setning for å øke eller redusere variabelen. Disse tilleggene gjør en for løkke spesielt nyttig for å krysse lister, beholdere og matriser fordi de har et fast antall elementer.

Du kan også bruke en setning på hvert element og øke veien gjennom elementene, og angi betingelsen for å teste for det siste elementet.

Eksempel på en for løkke

I det følgende kodeeksemplet skrives elementene i en matrise med heltall ut.

int integers[10];
for (int i = 0; i < 10; i++)
{
    info(int2str(integers[i]));
}
// The output is a series of 0's.

mens løkker

Syntaksen for en stundsløkke er:

mens (uttrykk)-setning

En mens løkke gjentatte ganger utfører setningen så lenge det betingede uttrykket er sant. Du kan erstatte setningen med en blokk med setninger. Løkken utfører setningen så mange ganger som betingelsen er oppfylt (null til mange).

Eksempel på en stunds løkke

Følgende kodeeksempel demonstrerer en løkke som krysser en beholder og skriver ut innholdet i beholderen.

container cont = ["one", "two", "three"];
int no = 1;
while (no <= conlen(cont))
{
    info(conPeek(cont, no));
    no++;
}
// The output is "one", "two", "three".

gjøre... mens løkker

Syntaksen for do... mens løkke er:

do {statement} mens (uttrykk) ;

Det er ikke noe å gjøre... mens løkke ligner på mens-løkken , men betingelsen vises etter setningen som må utføres. setningen kan være en blokk med setninger. Setningen utføres alltid minst én gang, fordi betingelsen testes etter at setningen er utført. Det er ikke noe å gjøre... mens løkke er godt egnet til aktiviteter som alltid må gjøres minst én gang, for eksempel å få parametere for en rapport.

Eksempel på en do... mens løkke

Følgende kodeeksempel finner den minste potensen av 10 som er større enn realNumber.

int FindPower(real realNumber)
{
    int exponent = -1;
    real curVal;

    do
    {
        exponent++;
        curVal = power(10, exponent);
    }
    while (realNumber > curVal);

    return exponent;
}

fortsett setning

Continue-setningen fører til at kjøringen flyttes direkte til neste gjentakelse av en for, mens eller gjør ... mens løkke. For do eller while utføres testen umiddelbart. For en for setning utføres intervallertrinnet.

Eksempel på en continue-setning

I det følgende kodeeksemplet, hvis Iarray[i] <= 0, utfører ikke løkken de gjenværende setningene. Løkkeintervallene i før den prøver hvis-setningen på nytt.

int Iarray[100];
for (int i = 0; i < 100; i++)
{
    if (Iarray[i] <= 0)
    {
        Info("Will continue.");
        continue;
    }

    info("Did not continue.");
}
// The output is "Will continue." for all 100 interations.

break-setning

Bruk bruddsetningen i en løkke til å avslutte den løkken. Kjøringen flyttes deretter til den første setningen etter løkken.

Eksempel på en pausesetning

Dette eksemplet bruker en pausesetning innen en stunds løkke. Når den brukes i en løkke, avsluttes løkken og kjøringen fortsetter fra setningen etter løkken. Denne virkemåten fungerer for do... mens og for løkker også.

var mainMenu = SysDictMenu::newMainMenu();
var enum = mainMenu.getEnumerator();
var found = false;
while (enum.moveNext())
{
    var menuItem = enum.current();
    if (menuItem.label() == "StringOfInterest")
    {
        found = true;
        break;
    }
}
if (found) 
{
    // do something
}