Static variables
BlitzMax Forums/BlitzMax Beginners Area/Static variables
Does Blitmax support static variables?
thanks
Depends how you are using the term 'static variables'.
You can use Constant variables, function variables and 'type/class' variables. Each could be considered static variables.
Sorry I should have been more specific - I meant local variables specifically?
That's confused me even more now.
You can use local variables. Check under Language / Variables.
How do you want to use these variables?
You might want to check the Beginner's Guide to Bmax in the tutorials section.
I think what you need to focus on at this point is the variables 'scope' (i.e where the variable can be accessed)
a GLOBAL and CONSTANT can be accessed anywhere
a Local can be accessed only within it's scope (Function, Type, Method etc)
Apologies, I'm getting tangled up in my own confusion. I meant - is there any way to declare a local variable as static (that is next time the variable is encountered its previous value is stored) - but I guess the answer i no and the solution to this is in tonyg's first response. Apologies for the confusion
Blimey...
THIS IS A LINK >>>
Does BMax have static variables? <<< THIS IS A LINK
I'm not going to post it again. ;o)
Melvin, your first link just looks like you are asking the question again.
I meant - is there any way to declare a local variable as static (that is next time the variable is encountered its previous value is stored) - but I guess the answer i no and the solution to this is in tonyg's first response.
The answer is actually yes (as Melvin points out).
Function staticTest()
Global myVar:Int
myVar:+1
Print myVar
EndFunction
staticTest
staticTest
staticTest
staticTest
staticTest
staticTest
FlameDuck's example DOES preserve the value of the variable upon further calls (because it's global), so in that respect it is static. But if Ant is refering to local variables with the same characteristics, then no.
I'm surprised, actually, that BM allows the declaration of a global variable within a function like that.
Russell
I'm surprised, actually, that BM allows the declaration of a global variable within a function like that.
It doesn't have global scope, thus is not a global. Try it, it works. So does this:
SuperStrict
Graphics 32,32
Local terminate:Int = False
While Not terminate
WaitEvent
If EventID() = EVENT_KEYDOWN
Global myVar:Int
Select EventData()
Case KEY_ESCAPE
terminate = True
Case KEY_SPACE
myVar:+1
Print myVar
EndSelect
EndIf
' Print myVar ' Enable this, and the program won't compile.
EndWhile
LOL @ this thread...It's not rocket science! |oD
Print Count()
Print Count()
Print Count()
Print i
Print Count()
Print Count()
End
Function Count()
Global i
i :+ 1
Return i
End Function