Difference between revisions of "NO/Documentation/BASIC Guide/Scope of Variables"
(Created page with '{{NO/Documentation/BASICGuideTOC/v2 |ShowPrevNext=block |ShowPrevPage=block |PrevPage=NO/Documentation/BASIC Guide/Arrays |NextPage=NO/Documentation/BASIC Guide/Constants |lang=b…') |
|||
Line 6: | Line 6: | ||
|lang=block | |lang=block | ||
}} | }} | ||
− | + | ||
__NOTOC__ | __NOTOC__ | ||
Det man ser er prosedyrer inne i en modul. Et bibliotek er en samling moduler. | Det man ser er prosedyrer inne i en modul. Et bibliotek er en samling moduler. |
Latest revision as of 07:49, 30 June 2018
Det man ser er prosedyrer inne i en modul. Et bibliotek er en samling moduler.
Navngitte data (variabler og navngitte konstanter) er gyldige i den del der de er deklarert.
Data som deklareres inne i en prosedyre kalles lokale. De er gyldige kun inne i prosedyren og "glemmes" etter at den er ferdig, som: Variables that are declared in a function or a procedure are called local variables:
Sub Test Dim a As Integer Static b As String ' ... End Sub
Hver gang prosedyren startes om igjen, blir variabelen a "nyskapt", som om den aldri var brukt. Variabel b blir derimot husket, fordi den har direktivet Static.
Variabler deklarert innenfor en modul (i "header") med Dim blir public, det vil si at alle moduler innenfor samme biblioteket som X er, vil ha tilgang.
Module skatteBeregning Dim A As Integer Sub Test Flip Flop End Sub Sub Flip A = A + 1 End Sub Module B: Sub Flop A = A - 1 End Sub
Verdien i variabel A endres ikke av prosedyren Test, men blir inkrementert i Flip og reduseres i Flop (selv om den siste er i en annen modul!).
Vil en sikre seg at en variabel blir public brukes direktivet Public:
Public A As Integer Global B As String Private C As Boolean
Variabler som er public er kun gyldige mens en prosedyre eksekverer. De "glemmes" idet siste prosedyre er ferdig. Vil en huske variabler brukes direktivet Global.
Private variabler er kun gyldig inni modulen de er deklarert i. Hvis flere moduler har private med likt navn lages en for hver modul. Under vil modul A og B ha en Private variabel med navn C. Prosedyren Test setter Private variabel i modul A og deretter Private variabel i modul B.
Module A: Private C As Integer Sub Test SetModuleA ' setter modul A sin C SetModuleB ' setter modul B sin C ShowVarA ' viser 10 ShowVarB ' viser 20 End Sub Sub SetModuleA C = 10 End Sub Sub ShowVarA MsgBox C ' viser A sin C End Sub Module B: Private C As Integer Sub SetModuleB C = 20 End Sub Sub ShowVarB MsgBox C ' viser B sin C End Sub
Content on this page is licensed under the Public Documentation License (PDL). |