watt ([info]watt) rakstīja [info]koderi kopienā,
@ 2006-01-27 12:52:00

Previous Entry  Add to memories!  Tell a Friend!  Next Entry
beidzot viens labs materiāls kas sīki un skaidri pastāsta par to, kas ir closure.

vispār, man ir doma uzrakstīt nelielu eseju par to kā akadēmija māca OO par polymorphism, encapsulation, inheritance, un cik vienkārši šie koncepti ir dzīvē. tā pat kā teorija par "closure" vai "continuations" ir baisma, bet reāli tie visi ir ļoti vienkārši valodas elementi.


(Lasīt komentārus) - (Ierakstīt jaunu komentāru)


[info]watt
2006-01-27 13:37 (saite)

triks closurei ir tikai tas, ka viņai ir pieejami funkcijas mainīgie pa tiešo. tb viņa tos redz un var mainīt kā grib.

imho paskālā vēl bija tā fīča "palīgfunkcija iekš funkcijas". parasti tos closure ir ērti izmanto priekš error handlinga. tb, nevis goto cleanup; bet izsauc cleanup() closure, kas visu izdara.

tipa:
if FAILED(hr) then cleanup(); return;

(kur cleanup() vietā C būtu bijis jāraksta "goto cleanup;"

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]markizs
2006-01-27 13:44 (saite)
nu tavu domu es sapratu, bet nu kā jau teicu, taj valodā vārdam closures bij cita fiška. sk exampli. Tip doma tāda, ka ir definēts statisks teksts kuru izsauc dažādi objekti un tad nu tur closures ienes dinamiku. kaut kā tā.

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]smejmoon
2006-01-27 13:51 (saite)
tās saucās lambdas; apakškopa

(Atbildēt uz šo) (Iepriekšējais)


[info]watt
2006-01-27 16:16 (saite)
lambda closure gan tai valodiņā pēc sūda izskatās ;-p


, lambda( ({ 'liv })
, ({'#, , ({#'=, 'hp, ({#'call_other, 'liv, "QueryHP" }) })
, ({#'?, ({#'>, 'hp, 10 })
, ({#'call_other, 'liv, "SetHP"
, ({#'-, 'hp, 10 })
})

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]markizs
2006-01-27 16:18 (saite)
nu turpat arī ir rakstīts, ka tas esot slikts piemērs un ka tā lambda closures izmantot nevajagot, the power of these lies elsewhere. un par izskatu, nu kāds ir tāds ir

(Atbildēt uz šo) (Iepriekšējais)


(Lasīt komentārus) -

Neesi iežurnalējies. Iežurnalēties?