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