Using '@' to mark pass-by-reference (was Re: synonyms)
bobsneidar at iotecdigital.com
Fri Aug 18 11:18:32 EDT 2017
That actually is a great explanation which solves a mystery I've often wondnered about, which is how a handler with a different variable name can contain the *actual* original variable. I thought the engine actually created a new variable and copied the incoming value to it, and then reversed this operation on return. Aliasing makes perfect sense.
> On Aug 18, 2017, at 08:13 , Mark Waddingham via use-livecode <use-livecode at lists.runrev.com> wrote:
> In fact, what is happening is aliasing of variables:
> myHandler @tFoo -- when tFoo is passed to myHandler, xFoo1 in myHandler is aliased to tFoo
> command myHandler @xFoo1 -- xFoo1 as a variable does not exist, it is an alias to the calling var
> myOtherHandler @xFoo -- xFoo *is* tFoo, we are passing by-ref again so use @ which 'passes the alias on'
> end myHandler
> command myOtherHandler @xFoo2 -- xFoo2 as a variable does not exist, it is an alias to the calling var
> answer xFoo2 -- xFoo2 *is* tFoo
> end myOtherHandler
> Perhaps I'm not explaining this very well - or there is something I'm missing...
> Warmest Regards,
> Mark Waddingham ~ mark at livecode.com ~ http://www.livecode.com/
> LiveCode: Everyone can create apps
More information about the Use-livecode