Tak jsou z tohohle prispevku tedy nejsem moudry, funguje to jako uzavery nebo ne?
@2: Uzavery se hodi treba pro implementaci operaci nad datovymi strukturami. Jelikoz v ramci uzaveru muzes pristupovat k promennym lexikalne definovanym vne uzaveru, chova se to jako kdyby to bylo soucasti tehoz bloku, ale zaroven se ten kod muze provadet v kontextu nejake operace treba nad datovou strukturou, jejiz technicke detaily jsou schovane mimo.
Prikladem muze byt treba funkce, ktera pracuje s kazdym prvkem stromu. Detaily te struktury (treba fakt, ze jde o strom) mohou byt implementovane mimo, jen prislusna metoda vola dalsi parametr, odkaz na funkci (uzaver), ktery pracuje prave s jednim prvkem. Ten pak muze zcela prirozene odkazovat v miste pouziti dalsi promenne.
V Jave se daji uzavery emulovat definici metody ve vnitrni tridy (a proto je to syntakticky cukr), ale urcite to neni syntakticky cukr ve vsech jazycich - treba ruzne Lispy naopak maji uzaver jako primitivu a pomoci ni teprve definuji objekty, jak to krasne popisuje knizka Let Over Lambda.
Autor se zabývá vývojem kompilátorů a knihoven pro objektově-orientované programovací jazyky.
Přečteno 36 207×
Přečteno 25 364×
Přečteno 23 797×
Přečteno 20 180×
Přečteno 17 876×