Vnorená funkcia je funkcia, ktorá je vytvorená vo vnútri inej funkcie v MATLABE. Zvláštnosťou vnorených funkcií je, že môžu používať a meniť premenné, ktoré sú definované v rodičovskej funkcii.
Syntax
Tieto vnorené funkcie v MATLABE môžu ľahko pristupovať k premenným rodičovských funkcií. Tu je syntax na definovanie vnorených funkcií v MATLABE:
funkciu rodič
disp ( 'Rodičovská funkcia' )
nestedfx
funkciu nestedfx
disp ( 'Vnorená funkcia' )
koniec
koniec
Príklad kódu
Nižšie uvádzame MATLAB kód vnorenej funkcie:
funkciu rodičovská funkcia
x = 10 ;
nestedFunction1 ( )
% Vnorená funkcia 1
funkciu nestedFunction1
disp ( 'Inside nestedFunction1' ) ;
disp ( X ) ; % Prístup k premennej x z nadradenej funkcie
a = dvadsať ;
nestedFunction2 ( )
% Vnorená funkcia 2
funkciu nestedFunction2
disp ( 'Inside nestedFunction2' ) ;
disp ( X ) ; % Prístup k premennej x z nadradenej a vnorenej funkcie 1
disp ( a ) ; % Prístup k premennej y z vnorenej funkcie 1
koniec
koniec
koniec
Vyššie, MATLAB definuje názov hlavnej funkcie ako rodičovská funkcia a definuje dve vnorené funkcie: nestedFunction1 a nestedFunction2 .
NestedFunction1 zobrazuje hodnotu premennej x z nadradenej funkcie a definuje ďalšiu premennú y. Potom zavolá názov funkcie nestedFunction2.
NestedFunction2 zobrazuje hodnotu x z nadradenej funkcie a nestedFunction1, ako aj hodnotu y z nestedFunction1. Po vykonaní kódu sa na výstupe zobrazia správy z oboch vnorených funkcií spolu s hodnotami x a y.
Zdieľanie premenných z vnorených funkcií do hlavnej funkcie
V MATLABE môžeme tiež definovať premenné a zdieľať ich od vnorenej do hlavnej funkcie.
funkciu rodičnestedfunc
funkciu nestedfunc
x = 10 ;
koniec
x = x+ 1 ;
disp ( X ) ;
koniec
Tento kód MATLABu definuje funkciu s názvom parent, ktorá obsahuje volanú vnorenú funkciu nestedfunc . Kód priradí premennej x v nestedfunc hodnotu 10, potom ju zvýši o 1 v nadradenej funkcii a zobrazí výsledok.
Vnorenie viacerých funkcií do rovnakej nadradenej funkcie
V MATLABE môžeme tiež zahrnúť viacero funkcií do jednej hlavnej nadradenej funkcie.
% viacerých funkcií v rámci rovnakej nadradenej funkciefunkciu rodič
nestedfunc1
nestedfunc2
funkciu nestedfunc1
fprintf ( 'linuxhint.com\n' ) ;
koniec
funkciu nestedfunc2
fprintf ( „Vitajte v Linuxhint“ ) ;
koniec
koniec
Tento kód MATLABu definuje funkciu s názvom parent, ktorá obsahuje dve vnorené funkcie: nestedfunc1 a nestedfunc2. Keď sa volá rodičovská funkcia, vykoná obe vnorené funkcie. nestedfunc1 vytlačí správu Linuxhint.com a nestedfunc2 vytlačí správu „Welcome To Linuxhint“.
Zdieľanie premenných medzi vnorenými funkciami
V MATLABE môžeme tiež definovať a zdieľať premenné funkcie s jedným rodičom s dvoma vnorenými funkciami.
% dve vnorené funkcie pod rovnakou nadradenou funkcioufunkciu rodič
x = 5
vnorené1
vnorené2
funkciu vnorené1
x = x* 2 ;
koniec
funkciu vnorené2
x = x+ 5 ;
koniec
disp ( X )
koniec
Tento kód MATLABu definuje funkciu s názvom parent, ktorá deklaruje premennú x s hodnotou 5. Potom obsahuje dve vnorené funkcie: nested1 a nested2.
V nested1 sa hodnota x vynásobí 2, ale keďže x nie je explicitne odovzdané ako argument, vytvorí novú lokálnu premennú x v rámci nested1 namiesto úpravy vonkajšej premennej x.
V nested2 sa hodnota x zvýši o 5, čím sa tiež vytvorí nová lokálna premenná x v rámci nested2.
Po vykonaní vnorených funkcií kód zobrazí hodnotu vonkajšej premennej x, ktorá zostáva nezmenená na 5, pretože úpravy vykonané vo vnorených funkciách ovplyvňujú iba lokálne premenné v rámci týchto funkcií a nie vonkajšiu premennú.
Záver
Vnorené funkcie v MATLABE môžu organizovať kód, zlepšiť znovupoužiteľnosť a zlepšiť výkon. Umožňujú funkciám pristupovať a upravovať premenné definované v ich nadradených funkciách, čím umožňujú lepšie zapuzdrenie kódu. Vnorené funkcie znížili potrebu globálnych premenných alebo odovzdávania viacerých argumentov medzi funkciami. Tento článok obsahuje rôzne príklady vnorených funkcií v MATLABE.