function открывает определение функции
endfunction закрывает определение функции

## Описание

    function <выходные_аргументы>=<имя_функции><входные_аргументы>
      <операторы>
    endfunction

Где:

<имя_функции>

  указывает имя функции

<входные_аргументы>

  указывает список входных аргументов. Он может быть

  - рядом имён переменных, разделённых запятой и заключённым в круглые скобки, например `(x1,...,xm)`. Последнее имя переменной может быть ключевым словом `varargin` (см. varargin);

  - последовательностью `()` или ничего, если у функции нет входных аргументов.

<выходные_аргументы>

  указывает список выходных аргументов. Он может быть

  - рядом имён переменных, заключённым в квадратные скобки, например `[y1,...,yn]`. Последнее имя переменной может быть ключевым словом `varargout` (см. varargout);

  - последовательностью `[]`, если у функции нет выходных аргументов. В этом случае синтаксис может быть таким: `function <имя_функции><входные_аргументы>`

<операторы>

  указывает набор Scilab-инструкций (операторов). Этот синтаксис можно использовать для определения функции (см. functions) как встраиваемую, либо в файле-сценарии (см. exec). Для совместимости со старыми версиями Scilab'а функции, определённые в файле-сценарии, содержащем только определения функций, могут быть "загружены" в Scilab используя функцию `exec`.

Последовательность `function <выходные_аргументы>=<имя_функции><входные_аргументы>` нельзя разделять на несколько строк. После этой последовательности можно ставить в этой же строке операторы, если в конце добавить запятую или точку с запятой.

Заметьте, что `<имя_функции>` должно удовлетворять некоторым правилам синтаксиса (см. имена).

Определения функций могут быть вложенными.

## Примеры

    //определение встраиваемой функции
    function [x,y]=myfct(a,b)
    x=a+b
    y=a-b
    endfunction

    [x,y]=myfct(3,2)

    //определение функции в одну строку
    function y=sq(x),y=x^2,endfunction

    sq(3)

    //определение вложенных функций
    function y=foo(x)
    a=sin(x)
    function y=sq(x), y=x^2,endfunction
    y=sq(a)+1
    endfunction

    foo(%pi/3)

    // определение функции в файле-сценарии (см. exec)
    exec SCI/modules/elementary_functions/macros/asinh.sci;

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

- functions
- exec
- имена

## История

6.0.0 `function` and `endfunction` are now protected: Assignments like `function=1` or `endfunction=2` are no longer possible.