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