Программные файлы могут содержать несколько функций. Локальные и вложенные функции полезны для деления программ в меньшие задачи, облегчая читать и обеспечивать ваш код.
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)