Bạn thực sự có thể sử dụng một bên ngoài internal (local) function của tập tin M, trong đó nó được định nghĩa, nếu bạn có nó xử lý. Ví dụ, hàm sau trả về xử lý cho tất cả các subfunctions với 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
Hãy thử nó:
>> [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!
>>
Vì vậy, chúng ta có thể sử dụng chức năng nội bộ bên ngoài của tập tin M. Các hàm này thuộc loại scopedfunctions
và chúng tôi có thể thực hiện điều này vì MATLAB theo dõi nó là parentage
và tệp nguồn. Xem kết quả của the functions
command bằng các xử lý:
>> functions(hl{1})
ans =
function: 'subfun1'
type: 'scopedfunction'
file: 'E:\Users\jchappelow\Documents\MATLAB\internalHandlesTest.m'
parentage: {'subfun1' 'internalHandlesTest'}
Tất nhiên, bạn có thể thấy sự giúp đỡ cho các chức năng nội bộ khá dễ dàng:
>> help internalHandlesTest>subfun1
still internalHandlesTest.m
Nhưng để chạy chức năng địa phương, bạn cần phải nhận được một chức năng xử lý , chỉ có thể nhận được thông qua một đối số đầu ra của hàm chuẩn.
bản sao có thể có của [Matlab: gọi các hàm cục bộ từ dòng lệnh] (http://stackoverflow.com/questions/15461157/matlab-calling-local-functions-from-command-line) –
Nếu các hàm cục bộ của bạn liên quan đến việc yêu cầu các bài kiểm tra đơn vị riêng biệt của họ, có lẽ có lý do để đặt chúng trong các tệp riêng biệt của họ, có thể là các hàm riêng tư? Bạn có thể tìm thấy [câu hỏi hơi liên quan này] (http: // stackoverflow.com/q/3569933/52738) hữu ích. – gnovice
Câu trả lời khác được đề cập ở trên bởi H.Muster là rất giống nhau, nhưng câu trả lời của tôi giới thiệu các lệnh 'localfunctions' hữu ích mà dường như được xây dựng cho mục đích này. Tôi tự hỏi nếu nó đã luôn luôn được trong MATLAB. Tôi không nhớ lúc nào cũng nhìn thấy nó trong tài liệu. – chappjc