Поделиться через


Операторы цикла X++

Замечание

Группы интересов сообщества теперь переехали из Yammer в Microsoft Viva Engage. Чтобы присоединиться к сообществу Viva Engage и принять участие в последних обсуждениях, заполните форму " Запрос доступа к финансам и операциям Viva Engage Community " и выберите сообщество, к которому вы хотите присоединиться.

В этой статье описываются операторы цикла в X++.

Существует три оператора цикла: для, в то время как и делать... в то время как. Цикл повторяет свою инструкцию, пока условие, заданное для цикла, равно false. В инструкциях цикла можно использовать операторы останова и продолжения .

для циклов

Синтаксис цикла:

for (инициализация;тест;приращение) {statement}

Цикл многократно выполняет оператор, если проверка условного выражения имеет значение true. оператор может быть блоком инструкций. Текст цикла (оператора) может выполняться нулевым или более раз в зависимости от результатов теста.

Цикл для цикла отличается от других циклов, так как начальное значение может быть назначено переменной элемента управления и поскольку существует оператор для увеличения или уменьшения переменной. Эти дополнения делают цикл особенно полезным для обхода списков, контейнеров и массивов, так как они имеют фиксированное количество элементов.

Вы также можете применить инструкцию к каждому элементу и увеличить свой путь к элементам, установив условие для проверки последнего элемента.

Пример цикла

В следующем примере кода элементы в массиве целых чисел печатаются.

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

в то время как циклы

Синтаксис цикла в то время :

в то время как (выражение)оператор

Цикл в некотором времени многократно выполняет оператор , если условное выражениеимеет значение true. оператор можно заменить блоком инструкций. оператор выполняется столько раз, сколько выполняется условие (ноль к многим).

Пример цикла в некоторое время

В следующем примере кода демонстрируется цикл времени , который проходит по контейнеру и выводит содержимое контейнера.

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

делать... в то время как циклы

Синтаксис do... в то время как цикл:

do {statement} в то время как (выражение) ;

Сделать...в то время как цикл аналогичен циклу, но условие отображается после инструкции, которая должна быть выполнена. оператор может быть блоком инструкций. Оператор всегда выполняется по крайней мере один раз, так как условие проверяется после выполнения инструкции. Сделать...хотя цикл хорошо подходит для задач, которые всегда должны выполняться по крайней мере один раз, например получение параметров для отчета.

Пример выполнения... в то время как цикл

В следующем примере кода обнаруживается наименьшая мощность 10, превышающая realNumber.

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

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

    return exponent;
}

Оператор continue

Оператор continue приводит к переходу непосредственно к следующей итерации a,в то время как или делать... в то время как цикл. Для выполнения или во время выполнения теста выполняется немедленно. Для инструкции выполняется шаг увеличения.

Пример инструкции continue

В следующем примере кода, если Iarray[i] <= 0остальные операторы в цикле не выполняются, и i увеличивается до повторной попытки инструкции if .

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

Оператор останова в цикле используется для завершения этого цикла. Затем выполнение переходит к первой инструкции после цикла.

Пример инструкции останова

В этом примере используется оператор останова в течение некоторого цикла. При использовании в цикле цикл завершается, и выполнение продолжается из инструкции, следующей за циклом. Это хорошо подходит для ... в то время как и для циклов.

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
}