Názor ke článku Lambda výrazy v Javě od JS - Tak jsou z tohohle prispevku tedy nejsem moudry,...

  • 10. 3. 2014 14:51

    JS (neregistrovaný)

    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.