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

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

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


% 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 функция для автоматического создания cell-массива указателей на функцию из всех локальных функций. Этот подход удобен, если вы ожидаете добавить, удалить или изменить имена локальных функций.

См. также

Похожие примеры

Подробнее о