Problem with declaring local variables

Peter T. Evensen pevensen at siboneylg.com
Wed Jun 7 11:00:41 EDT 2006


On your second point, do you mean a declared local variable OUTSIDE a 
handler?    I think you are confusing a declared local variable INSIDE a 
handler with one that is declared OUTSIDE a handler.

I don't believe one declare INSIDE a script retains its value:

local sRetainsValue = 0

on AddOne
     add 1 to sRetainsValue
     put sRetainsValue
end AddOne

on AddHandler
    local tDoNotRetainValue = 0

    add 1 to tDoesNotRetainValue
    put tDoesNotRetainValue
end AddHandler

If you call AddOne, you will get 1, 2, 3, etc.

If you call AddHandler, you will always get 1.

There is a difference between SCRIPT local, which must be declared, and 
HANDLER local, which is optionally declared (unless explicitVariables is 
true).  If a variable is not declared outside a handler, it is assumed to 
be a handler local variable and reinitialized every time the handler is called.

At 09:49 AM 6/7/2006, you wrote:
>Hi Steve,
>
>>Until now I've had the impression that global variables need to be declared,
>>whereas local variables do not.
>
>That depends on whether one wants the value of the local variable to 
>persist during runtime:
>
>* An undeclared local variable is initialized to empty every time the 
>handler is called.
>
>* A declared local variable is initialized at startup.  Each time a 
>handler referencing the variable is called, it contains the value it had 
>at the conclusion of the last call.
>
>Also, the scope of undeclared variables is always limited to the handler 
>that contains them, whereas the scope of declared [outside the handler] 
>local variables encompasses the entire script that declares them.  [But 
>only that script: unlike globals, declared local variables with the same 
>name in different scripts are different variables.]
>
>
>Rob Cozens
>CCW, Serendipity Software Company
>
>"And I, which was two fooles, do so grow three;
>Who are a little wise, the best fooles bee."
>
>_______________________________________________
>use-revolution mailing list
>use-revolution at lists.runrev.com
>Please visit this url to subscribe, unsubscribe and manage your 
>subscription preferences:
>http://lists.runrev.com/mailman/listinfo/use-revolution

Peter T. Evensen
http://www.PetersRoadToHealth.com
314-629-5248 or 888-682-4588 





More information about the use-livecode mailing list