4.4 - break and return

Операторы break и return позволяют выйти из блока до его естественного завершения.

Оператор break используется для завершения цикла. Этот оператор прерывает внутренний цикл (for, repeat, or while), содержащий его; онне может быть использован вне цикла. После прерывания, программа продолжает выполнение с места, следующего сразу после цикла.

Оператор return возвращает результаты работы функции или просто завершает выполнение функции. Он подразумевает переход в конец функции, т.е нет необходимости выхова данного оператора в случае естественного завершения функции без возврата к.-л. значения в основную программу.

В соответствии с синтаксическими ограничениями, break или return могут применяться лишь как последний элемент блока (другими словами, как последний элемент chunk'а или непосредственно перед end, else или until). В следующем примере break является последним оператором блока then.

    local i = 1
    while a[i] do
      if a[i] == v then break end
      i = i + 1
    end
Обычно, это все места, где используются рассматриваемые операторы, т.к. любые други операторы, следующие за ними, являются недостижимыми. Иногда, однако, может быть удобно поместить return (или break) в середине блока; например, при отладке функции, когда нежелательно выполнение к.-л. группы операторов. В таких случаях необходимо заключить операторы прерывания в явный блок do:
    function foo ()
      return          --<< СИНТАКСИЧЕСКАЯ ОШИБКА
      -- 'return' - последний элемент с следующем блоке
      do return end   -- OK
      ...             -- операторы не достигаются
    end


Hosted by uCoz