Угнежђена функција је функција која је креирана унутар друге функције у МАТЛАБ-у. Посебна ствар у вези са угнежђеним функцијама је да могу да користе и мењају променљиве које су дефинисане у родитељској функцији.
Синтакса
Ове угнежђене функције у МАТЛАБ-у могу лако приступити варијаблама родитељске функције. Ево синтаксе за дефинисање угнежђених функција у МАТЛАБ-у:
функција родитељ
дисп ( 'Родитељска функција' )
нестедфк
функција нестедфк
дисп ( 'Угнежђена функција' )
крај
крај
Пример кода
У наставку смо дали МАТЛАБ код угнежђене функције:
функција парентФунцтион
к = 10 ;
нестедФунцтион1 ( )
% Угнежђена функција 1
функција нестедФунцтион1
дисп ( 'Унутар угнијежђене функције1' ) ;
дисп ( Икс ) ; % Приступ променљивој к из родитељске функције
и = двадесет ;
нестедФунцтион2 ( )
% Угнежђена функција 2
функција нестедФунцтион2
дисп ( 'Инсиде нестедФунцтион2' ) ;
дисп ( Икс ) ; % Приступ променљивој к из родитељске и угнежђене функције 1
дисп ( и ) ; % Приступ променљивој и из угнежђене функције 1
крај
крај
крај
Изнад, МАТЛАБ дефинише име главне функције као парентФунцтион и дефинише две угнежђене функције: нестедФунцтион1 и нестедФунцтион2 .
НестедФунцтион1 приказује вредност променљиве к из родитељске функције и дефинише другу променљиву и. Након тога, позваће име функције нестедФунцтион2.
НестедФунцтион2 приказује вредност к из родитељске функције и нестедФунцтион1, као и вредност и из нестедФунцтион1. Након извршења кода, излаз ће приказати поруке обе угнежђене функције, заједно са вредностима к и и.
Дељење променљивих од угнежђених функција до главне функције
У МАТЛАБ-у такође можемо дефинисати променљиве и делити их од угнежђене у главну функцију.
функција родитељнестедфунц
функција нестедфунц
к = 10 ;
крај
к = к+ 1 ;
дисп ( Икс ) ;
крај
Овај МАТЛАБ код дефинише функцију која се зове родитељ која садржи угнежђену функцију која се зове нестедфунц . Код додељује вредност 10 променљивој к у нестедфунц, затим је повећава за 1 у родитељској функцији и приказује резултат.
Угнежђивање више функција под истом родитељском функцијом
У МАТЛАБ-у такође можемо укључити више функција унутар једне главне родитељске функције.
% више функција под истом родитељском функцијомфункција родитељ
нестедфунц1
нестедфунц2
функција нестедфунц1
фпринтф ( 'линукхинт.цом\н' ) ;
крај
функција нестедфунц2
фпринтф ( 'Добродошли у Линукхинт' ) ;
крај
крај
Овај МАТЛАБ код дефинише функцију звану родитељ која садржи две угнежђене функције: нестедфунц1 и нестедфунц2. Када се позове родитељска функција, она извршава обе угнежђене функције. нестедфунц1 штампа поруку Линукхинт.цом, а нестедфунц2 штампа поруку „Велцоме То Линукхинт“.
Дељење променљивих међу угнежђеним функцијама
У МАТЛАБ-у такође можемо дефинисати и делити променљиве једнородитељских функција са две угнежђене функције.
% две угнежђене функције под истом родитељском функцијомфункција родитељ
к = 5
нестед1
нестед2
функција нестед1
к = к* 2 ;
крај
функција нестед2
к = к+ 5 ;
крај
дисп ( Икс )
крај
Овај МАТЛАБ код дефинише функцију звану родитељ која декларише променљиву к са вредношћу 5. Затим садржи две угнежђене функције: угнежђене1 и угнежђене2.
У нестед1, вредност к се множи са 2, али пошто к није експлицитно прослеђен као аргумент, креира нову локалну променљиву к унутар угнежђеног1 уместо да мења спољашњу к променљиву.
У нестед2, вредност к се повећава за 5, такође стварајући нову локалну променљиву к унутар угнежђеног2.
Након извршавања угнежђених функција, код приказује вредност спољашње променљиве к, која остаје непромењена на 5 јер модификације направљене у угнежђеним функцијама утичу само на локалне променљиве унутар тих функција, а не на спољашњу променљиву.
Закључак
Угнежђене функције у МАТЛАБ-у могу организовати код, побољшати поновну употребу и побољшати перформансе. Они дозвољавају функцијама да приступе и модификују променљиве дефинисане у њиховим родитељским функцијама, омогућавајући бољу енкапсулацију кода. Угнежђене функције су смањиле потребу за глобалним променљивим или преношењем више аргумената између функција. Овај чланак покрива различите примере угнежђених функција у МАТЛАБ-у.