# resume

выполнение возврата или возобновление и копирование некоторых локальных переменных

## Последовательность вызова

    resume
                [x1, ..., xn] = resume(a1, ..., an)

## Аргументы

x1, ..., xn

  переменные в вызывающем окружении

a1, ..., an

  локальные переменные

## Описание

Внутри функции инструкция `resume` останавливает исполнение функции; `[x1, ..., xn] = resume(a1, ..., an)` останавливает исполнение функции и передаёт локальные переменные `ai` в вызывающее окружение под именами `xi`.

В режиме `pause`, можно вернуться на более высокий уровень. `[x1, ..., xn] = resume(a1, ..., an)` возвращает на верхний уровень и передаёт локальные переменные `ai` под именами `xi`.

В `execstr`, вызванной функцией, `[x1, ..., xn] = resume(a1, ..., an)` прекращает исполнение функции и выдаёт локальные переменные `ai` в вызывающее окружение под именами `xi`.

Инструкция `resume` эквивалентна инструкции `return`.

Примечание: использование этой возможности может усложнить код. Вместо этого рекомендуется синтаксис `function b = foo()`.

## Примеры

    function foo(a)
             a=a+1
             b=resume(a)
             c=52
    endfunction

    foo(42);
    assert_checkequal(b,43);
    // c не существует

    // при наличии нескольких вызовов функции
    function foo1()
      a=1;
      b=2;
      c=3;
      [x, y, z] = resume(a, b, c)
    endfunction

    function foo2()
      foo1()
      x, y, z // объявлены
    endfunction

    foo2()
    // x, y и z здесь не существуют

## Смотрите также

- abort
- break
- quit
- pause
- return
- execstr