On 2017-08-18 15:53, Mike Kerner via use-livecode wrote:
I understand the difference.  I'm just trying to help with the mental
arithmetic. I, and others, I'm sure, will constantly forget where the "@"
goes, for instance.

Okay so - the question to ask is - what would make you forget where to put the "@"?

In this case, if you want a by-ref parameter you have to put '@' before it in the signature, the proposal is to allow '@' to also be placed before the argument in a handler call for by-ref parameters... So it is entirely symmetric:

  command myHandler @xFoo
  end myHandler

  myHandler @tFoo

There is no 'de-referencing' operation as by-ref parameters implicitly de-reference on use - indeed, there's no need to have a de-reference operation because there is no such thing as a 'reference' which can be 'put into' a variable (that would be general references - which this isn't about).

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.

--
Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps

_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to