Contenuto principale

Funzioni locali

Questo argomento spiega il termine funzione locale e mostra come creare e utilizzare le funzioni locali.

I file di programma di MATLAB® possono contenere codice per più di una funzione. In un file di funzioni, la prima funzione nel file è chiamata funzione principale. Questa funzione è visibile alle funzioni presenti in altri file oppure è possibile richiamarla dalla riga di comando. Le ulteriori funzioni presenti nel file sono chiamate funzioni locali e possono comparire in qualsiasi ordine dopo la funzione principale. Le funzioni locali sono visibili solo alle altre funzioni presenti nello stesso file. Sono equivalenti alle subroutine in altri linguaggi di programmazione e talvolta vengono chiamate sottofunzioni.

È anche possibile creare funzioni locali in un file di script. Le funzioni locali possono essere aggiunte in qualsiasi punto del file, tranne che nei contesti condizionali, come le dichiarazioni if o i for loop. Per maggiori informazioni, vedere Add Functions to Scripts.

Prima di R2024a: Le funzioni locali negli script devono essere definite alla fine del file, dopo l'ultima riga di codice dello script.

Ad esempio, creare un file di funzioni denominato mystats.m he contenga una funzione principale mystats e due funzioni locali mymean e mymedian.

function [avg, med] = mystats(x)
n = length(x);
avg = mymean(x,n);
med = mymedian(x,n);
end

function a = mymean(v,n)
% MYMEAN Example of a local function.

a = sum(v)/n;
end

function m = mymedian(v,n)
% MYMEDIAN Another example of a local function.

w = sort(v);
if rem(n,2) == 1
    m = w((n + 1)/2);
else
    m = (w(n/2) + w(n/2 + 1))/2;
end
end

Le funzioni locali mymean e mymedian calcolano la media e la mediana dell'elenco di input. La funzione principale mystats determina la lunghezza dell'elenco n e la passa alle funzioni locali.

Sebbene una funzione locale non possa essere richiamata dalla riga di comando o da funzioni presenti in altri file, è possibile accedere alla relativa guida utilizzando la funzione help. Specificare i nomi sia del file che della funzione locale, separandoli con il carattere >:

help mystats>mymean
  mymean Example of a local function.

Le funzioni locali nel file attuale hanno la precedenza sulle funzioni e sui metodi della classe presenti in altri file. Ossia, quando si chiama una funzione o un metodo all'interno di un file di programma, MATLAB verifica se la funzione è una funzione locale prima di cercare altre funzioni principali. Pertanto, è possibile creare una versione alternativa di una determinata funzione mantenendo l'originale in un altro file.

Tutte le funzioni, comprese quelle locali, dispongono di workspace propri separati dal workspace di base. Le funzioni locali non possono accedere alle variabili utilizzate da altre funzioni a meno che non vengano passate come argomenti. Al contrario, le funzioni annidate (funzioni completamente contenute all'interno di un'altra funzione) possono accedere alle variabili utilizzate dalle funzioni che le contengono.

Vedi anche

Argomenti