[Powered by Google Translate] DAVID DICIURCIO: Felly yn gysyniad pwysig afael ag ef yn
rhaglennu yw'r syniad o gwmpas.
Gellir Scope yn cael ei ddiffinio fel y cyd-destun y newidyn yn
weladwy nac yn hygyrch.
Er enghraifft, gadewch i ni ddweud ein bod wedi swyddogaeth, prif, hynny yw
i fod i gynnydd newidyn, x, o un i ddau.
Fel y gallwn weld, prif initializes x i un, printiau
allan rhywfaint o destun, ac yna rhedeg y cynyddiad swyddogaeth, cyn
argraffu testun yn fwy.
Os yw hyn yn swyddogaeth oedd i redeg yn gywir, byddai'n
argraffu x yn 2.
Gadewch i ni roi cynnig arni.
>> Felly, fel y gallwch weld, nid yw'n prif gwneud yr hyn yr oeddem yn disgwyl i.
Mae'n dychwelyd y gwerth 1, yn hytrach
na'r 2 oeddem yn disgwyl.
Gall y rheswm am hyn bug eu hegluro gan cwmpas.
Yn y swyddogaeth, prif, rydym ymgychwyn x
yn unig o fewn y swyddogaeth.
Mewn geiriau eraill, mae'r newidyn x yn cael ei ddatgan yn lleol o fewn y
swyddogaeth, prif, ac nid yw'n hygyrch
y tu allan i'r swyddogaeth.
Dim ond y prif fynediad x yn y sefyllfa hon.
Pan fyddwn yn galw cynyddiad nid ydym yn pasio x fel y mewnbwn, ond
dim ond copi o x.
O ganlyniad i hyn, mae'r cynyddiad swyddogaeth yn unig yn ychwanegu
y gwerth 1 i gopi o werth x.
Ond nid i X ei hun.
Pan fyddwn yn dychwelyd i'r cyfan, nid x ei hun wedi newid o gwbl.
Felly, bydd argraffu x ond yn cynhyrchu gwerth o 1.
>> Wel, yna mae hynny'n gadael y cwestiwn: sut y dylem bennu
swyddogaeth hon?
Un ateb yn cael cynyddiad yn dychwelyd gwerth.
Yn y modd hwn, mae'r cynyddiad swyddogaeth yn
rhoi ni yn ôl yn gyfanrif.
Felly dyma ein cod diwygiedig gyda'r
swyddogaeth gynyddran bob yn ail.
Yma, rydym yn lle hynny dychwelodd y x + 1, yn hytrach na dim ond diwedd
gyda x yn gyfartal i x + 1.
Hefyd, yn sylwi ein bod yn cymryd lle'r allbwn
cynyddiad, yn flaenorol yn ddi-rym, gyda int, gan nodi bod
Bydd cynyddiad awr yn pasio yn ôl gwerth cyfanrif.
Nawr, ar ôl rhediadau cynyddiad, bydd yn dychwelyd gyda gwerth o
2, yn union fel yr ydym yn bwriadu.
>> Sefyllfa arall sy'n dangos pwysigrwydd cwmpas yn
yn scopeloop.c.
Yn y cod hwn, mae gennym dros ddolen lle mae'r newidyn
cyfanswm yn cael ei ymgychwyn yn ystod pob cam.
Yn anffodus, nid yw'r cod yn crynhoi.
Mae hyn oherwydd bod y cyfanswm amrywiol mewn gwirionedd yn bodoli
y tu allan i'r ddolen am.
Newidynnau datgan mewn dolenni ond yn bodoli o fewn y
dolen ei hun ac yn cael ei ddangos yn ein camgymeriad
neges, heb eu datgan cyfanswm.
Mae'r cyfanswm amrywiol eto i gael eu datgan o fewn y cwmpas
o'r prif swyddogaeth.
Ar ben hynny, yn ystod pob fersiwn o'n gyfer dolen, rydym yn
yn reinitializing ein cyfanswm i 0.
Nid yw hyn ynddo'i hun yn cadw'r cod o lunio, ond mae'n
yn atal cyfanswm o erioed grynhoi hyd at werth y gorffennol 1.
>> Unwaith eto, beth yw'r ffordd orau i atgyweiria hon?
Un o'r dulliau yn cynnwys gwneud yn haws cyfanswm lleol i
swyddogaeth, prif, yn hytrach nag i'r ddolen ei hun.
Bydd hyn yn gyfanswm i mewn gwirionedd cynyddiad, yn y pen draw,
caniatáu iddo gael ei argraffu ar ôl y ddolen ar gyfer.
Techneg arall y byddaf yn fras grynhoi byddai
fod y defnydd o newidynnau byd-eang.
Newidynnau byd-eang o newidynnau sy'n cael eu datgan cyn y prif
sy'n cynnal eu gwerth drwy gydol y rhaglen gyfan.
Wrth gwrs, gall swyddogaethau newid gwerth byd-eang,
ond nid ydynt yn mynd allan o gwmpas fel newidynnau lleol.
Fodd bynnag, gan ddefnyddio newidynnau byd-eang yn tueddu i gael ei gwgu
arnynt fel dylunio gwael, gan fod ffyrdd gwell o
rhannu data ymysg swyddogaethau.
Er enghraifft, gan ddefnyddio awgrymiadau.
Ond mwy am hynny rywbryd arall.
>> Yn olaf, mae'n bwysig cael dealltwriaeth o gwmpas
yng nghyd-destun o gof y cyfrifiadur, neu RAM.
Pan fyddwn yn gweithredu rhaglen, newidynnau lleol a swyddogaethau
yn cael eu hychwanegu i leoliad penodol yn y
RAM a elwir yn y pentwr.
Fel swyddogaethau gyfnewid, mae'r fframiau pentwr o newidynnau yn
gwaredu'n effeithiol o'r pentwr ryddhau mwy o gof.
Felly, wrth adolygu cwmpas, gwnewch yn siŵr eich bod yn cofio y tri
pwyntiau allweddol.
Gall un, cwmpas fod naill ai'n lleol neu fyd-eang.
Mae'n dibynnu ar ble y newidyn yn cael ei ddatgan.
Dau, newidynnau datgan neu ymgychwyn mewn swyddogaethau yn
Ni all lleol â'r swyddogaeth honno ac yn cael ei newid gan eraill
swyddogaethau, o leiaf nid heb ddefnyddio awgrymiadau.
Yn olaf, newidynnau hefyd yn lleol i ddolenni sy'n
datgan mewn.
Nid yw'r newidynnau yn hygyrch
y tu allan i'r ddolen.
>> Dyna'r cyfan am nawr ar gwmpas.
Diolch am wylio.