Типы функций

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

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

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

Например, создайте файл функции под названием myfunction.m это содержит основную функцию, myfunction, и две локальных функции, squareMe и doubleMe:

function b = myfunction(a)
   b = squareMe(a)+doubleMe(a);
end
function y = squareMe(x)
   y = x.^2;
end
function y = doubleMe(x)
   y = x.*2;
end

Можно вызвать основную функцию из командной строки или другого программного файла, несмотря на то, что локальные функции только доступны для myfunction:

myfunction(pi)
ans =
   16.1528

Nested functions полностью содержится в другой функции. Главная разница между вложенными функциями и локальными функциями - то, что вложенные функции могут использовать переменные, заданные в родительских функциях, явным образом не передавая те переменные в качестве аргументов.

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

function myslider
value = 0;
f = figure;
s = uicontrol(f,'Style','slider','Callback',@slider);
e = uicontrol(f,'Style','edit','Callback',@edittext,...
                'Position',[100,20,100,20]);

   function slider(obj,~)
      value = obj.Value;
      e.String = num2str(value);
   end
   function edittext(obj,~)
      value = str2double(obj.String);
      s.Value = value;
   end

end

Закрытые функции в подпапке

Как локальные или вложенные функции, закрытые функции доступны только для функций в определенном месте. Однако закрытые функции не находятся в том же файле как функции, которые могут вызвать их. Вместо этого они находятся в подпапке под названием private. Закрытые функции сразу доступны только для функций в папке выше private папка. Используйте закрытые функции, чтобы разделить код на различные файлы или совместно использовать код между несколькими, связанными функциями.

Анонимные функции без файла

Анонимные функции позволяют вам задавать функцию, не создавая программный файл, пока функция состоит из отдельного оператора. Распространенное приложение анонимных функций должно задать математическое выражение, и затем выполнить то выражение в области значений значений с помощью функции функции MATLAB®, i.e., функция, которая принимает указатель на функцию как вход.

Например, этот оператор создает указатель на функцию под названием s для анонимной функции:

s = @(x) sin(1./x);

Эта функция имеет один вход, x. @ оператор создает указатель на функцию.

Можно использовать указатель на функцию, чтобы выполнить функцию для особых значений, такой как

y = s(pi)
y = 0.3130

Или, можно передать указатель на функцию функции, которая оценивает в области значений значений, таких как fplot:

range = [0.01,0.1];
fplot(s,range)

Figure contains an axes object. The axes object contains an object of type functionline.

Похожие темы