A word of caution regarding static variables.  When used in a method in a
class definition, static variables are global to all instances of that
class.  When used in a method of, say, a window, then they are local to the
window and act like statics from other languages, retaining their value from
one call to the next.

It's a subtle distinction, but one that can catch you if you're not aware.

Example:
Let's say we subclass a push button, and we want to retain a counter of the
number of times it's been pushed.  So in the Action event, we put some code
to increment a counter.  But suppose we have a brain lapse and recall using
static variables in other situations, so we decide that a static would be
ideal for this use, as we won't have to define a property in the properties
list.

static myLocalCount as integer
myLocalCount= myLocalCount+ 1
Action()  // pass the event forward to the instance

One might expect myLocalCount to be nicely hidden in the action event, just
like a local variable, but retaining its value from one push to the next.
What will happen, however, is that all instances of our pushbutton class
will share the same variable.  If we have 3 instances of our button and each
is pressed once, instead of having 3 instances of myLocalCount, each equal
to 1, we have one myLocalCount which is equal to 3.  Not what we intended.

If you think about it, this functionality makes perfect sense, and can be a
powerful tool.  But if you want a local, private variable that retains its
value, add a property to the class and make it protected or private in
scope.

Tim



> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] Behalf Of
> Arnaud Nicolet
> Sent: Tuesday, February 27, 2007 5:02 AM
> To: REALbasic NUG
> Subject: Confused about new things in RB
>
>
> Hello,
>
> I'm trying to learn RB 2007 (I know well RB 5.5).
> I don't understand the added things (like static variables, for
> instance). I tryed searching for files in the "Read me" folder, but
> they don't speak about that.
> I would prefer to read a file that covers those new functionalities
> in realbasic (I probably won't understand a C version).
>
> Is there any information about that?
> _______________________________________________
> Unsubscribe or switch delivery mode:
> <http://www.realsoftware.com/support/listmanager/>
>
> Search the archives:
> <http://support.realsoftware.com/listarchives/lists.html>
>
> --
> No virus found in this incoming message.
> Checked by AVG Free Edition.
> Version: 7.5.446 / Virus Database: 268.18.3/699 - Release Date:
> 2/23/2007 1:26 PM
>
--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.5.446 / Virus Database: 268.18.4/703 - Release Date: 2/26/2007
2:56 PM

_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives:
<http://support.realsoftware.com/listarchives/lists.html>

Reply via email to