如果你有它的句柄,你实际上可以在定义它的M文件之外使用
internal (local) function.例如,以下函数将句柄返回到
the localfunctions command的所有子函数,
% internalHandlesTest.m
function [out,hl] = internalHandlesTest(in)
out = subfun1(in);
% hl = @subfun1; % just to get one internal function handle
hl = localfunctions; % to get all internal function handles
end
function subout = subfun1(subin)
% still internalHandlesTest.m
fprintf('You are using internalHandlesTest>subfun1!\n');
subout = subin;
end
function subfun2()
% still internalHandlesTest.m
fprintf('You are using internalHandlesTest>subfun2!\n');
end
我们来试试吧:
>> [out,hl] = internalHandlesTest(0);
You are using internalHandlesTest>subfun1!
>> disp(hl)
@subfun1
@subfun2
>> hl{1}(1)
You are using internalHandlesTest>subfun1!
ans =
1
>> hl{2}()
You are using internalHandlesTest>subfun2!
>>
因此,我们可以使用M文件之外的内部函数.这些函数属于scopedfunctions类型,我们可以这样做,因为MATLAB会跟踪它的父项和源文件.请参阅这些句柄上的the functions command输出:
>> functions(hl{1})
ans =
function: 'subfun1'
type: 'scopedfunction'
file: 'E:\Users\jchappelow\Documents\MATLAB\internalHandlesTest.m'
parentage: {'subfun1' 'internalHandlesTest'}
当然,您可以非常轻松地查看内部函数的帮助:
>> help internalHandlesTest>subfun1
still internalHandlesTest.m
但是要运行本地函数,需要获取一个函数句柄,该句柄只能通过规范函数的输出参数获得.