Локальные функции

В этом разделе описывается термин local function, и показано, как создать и использовать локальные функции.

MATLAB® программные файлы могут содержать код для нескольких функций. В файле функции первая функция в файле называется основной функцией. Эта функция видна функциям в других файлах, или можно вызвать ее из командной строки. Дополнительные функции внутри файла называются локальными функциями, и они могут происходить в любом порядке после основной функции. Локальные функции видны только другим функциям в том же файле. Они эквивалентны стандартным подпрограммам в других языках программирования и иногда называются подфункциями.

По состоянию на R2016b, вы также можете создать локальные функции в файле скрипта, пока они все появляются после последней строки кода скрипта. Для получения дополнительной информации смотрите Добавление функций к скриптам.

Например, создайте файл функции с именем mystats.m который содержит основную функцию, mystatsи две локальные функции, mymean и mymedian.

function [avg, med] = mystats(x)
n = length(x);
avg = mymean(x,n);
med = mymedian(x,n);
end

function a = mymean(v,n)
% MYMEAN Example of a local function.

a = sum(v)/n;
end

function m = mymedian(v,n)
% MYMEDIAN Another example of a local function.

w = sort(v);
if rem(n,2) == 1
    m = w((n + 1)/2);
else
    m = (w(n/2) + w(n/2 + 1))/2;
end
end

Локальные функции mymean и mymedian вычислите среднее значение и медиану списка входа. Основная функция mystats определяет длину списка n и передает его в локальные функции.

Хотя вы не можете вызвать локальную функцию из командной строки или из функций в других файлах, вы можете получить доступ к ее помощи, используя help функция. Задайте имена как файла, так и локальной функции, разделяя их > символ:

help mystats>mymean
  mymean Example of a local function.

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

Все функции, включая локальные функции, имеют свои собственные рабочие области, которые отделены от базового рабочего пространства. Локальные функции не могут получить доступ к переменным, используемым другими функциями, если вы не передаете их в качестве аргументов. Напротив, вложенные функции (функции, полностью содержащиеся в другой функции) могут получить доступ к переменным, используемым функциями, которые их содержат.

См. также

Похожие темы