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