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.


(Ierakstīt jaunu komentāru)


[info]markizs
2006-01-27 13:31 (saite)
interesanti. līdz šim citās programmēšanas valodas ar vārdu closure sapratu pavisam ko citu. tip ja nemaldos varēja jebkurai funkcijai kā argumentu ierakstīt vai nu norādi uz citu funkciju tip foo(#'bar); jeb arī pa tiešo darbības tur izveikt foo(#{for(a=1;a<3;a++){b++}; return b; }) vai arī kaut kā tā, neatceros sintaksi precīzi, un valoda bija c variants. bet nu tā kā closure angliski nozīmē saslēgt ielsēgt iežogot, tad loģiski saprotams, kapēc ar vienu vārdu var apzīmēt tik dažādas lietas, jo abās notiek kāda nebūt ieslēgšana.

(Atbildēt uz šo) (Diskusija)


[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)


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