.
>> [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!
>>
Yani, biz M dosyasının dışında iç işlevleri kullanabilirsiniz: Örneğin, aşağıdaki işlev
% 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
Bir deneyelim,
the localfunctions
command ile tüm alt-fonksiyonlar için kolları döndürür. Bu işlevler,
scopedfunctions
tipindedir ve bunu MATLAB,
parentage
ve kaynak dosyasını izlediği için yapabilmekteyiz. Bu saplar üzerine
the functions
command çıktısını bakınız:
Tabii
>> functions(hl{1})
ans =
function: 'subfun1'
type: 'scopedfunction'
file: 'E:\Users\jchappelow\Documents\MATLAB\internalHandlesTest.m'
parentage: {'subfun1' 'internalHandlesTest'}
, oldukça kolay iç fonksiyonları için yardıma görebilirsiniz:
>> help internalHandlesTest>subfun1
still internalHandlesTest.m
Ancak yerel fonksiyonlarını çalıştırmak için, bir fonksiyon ele almak gerekiyor sadece kanonik fonksiyonun bir çıkış argümanıyla elde edilebilir.
[Matlab: yerel işlevleri komut satırından çağırıyor] olası kopyası (http://stackoverflow.com/questions/15461157/matlab-calling-local-functions-from-command-line) –
Yerel işlevleriniz kendi ayrı birim testlerini gerektirecek şekilde dahil olabilirler, belki de kendi özel dosyalarına yerleştirmek için bir sebep vardır, belki de özel işlevler olarak? [Bu biraz ilgili soru] bulabilirsiniz (http: // stackoverflow.com/q/3569933/52738) yardımcıdır. – gnovice
Yukarıda H.Muster tarafından atıfta bulunulan diğer cevap çok benzer, fakat cevabım bu amaç için yapılmış gibi görünen kullanışlı 'localfonksiyonlar komutunu tanıttı. Her zaman MATLAB'da olup olmadığını merak ediyorum. Her zaman dokümanlar içinde gördüğümü hatırlamıyorum. – chappjc