Вызов локальных функций Используя Указатели на функции

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

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

Смотрите также

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

Больше о