exponenta event banner

Вызов локальных функций с использованием дескрипторов функций

В этом примере показано, как создавать дескрипторы для локальных функций. Если функция возвращает дескрипторы локальным функциям, можно вызвать локальные функции вне основной функции. Этот подход позволяет использовать несколько вызываемых функций в одном файле.

Создайте следующую функцию в файле, ellipseVals.m, в рабочей папке. Функция возвращает структуру с дескрипторами локальным функциям.


% Copyright 2015 The MathWorks, Inc.

function fh = ellipseVals
fh.focus = @computeFocus;
fh.eccentricity = @computeEccentricity;
fh.area = @computeArea;
end

function f = computeFocus(a,b)
f = sqrt(a^2-b^2);
end

function e = computeEccentricity(a,b)
f = computeFocus(a,b);
e = f/a;
end

function ae = computeArea(a,b)
ae = pi*a*b;
end

Вызовите функцию для получения struct дескрипторов к локальным функциям.

h = ellipseVals
h = 

  struct with fields:

           focus: @computeFocus
    eccentricity: @computeEccentricity
            area: @computeArea

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

h.area(3,1)
ans =

    9.4248

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

См. также

Связанные примеры

Подробнее