Making the move...

James Spencer jspencer78 at mac.com
Mon Mar 20 22:53:43 EST 2006


On Mar 20, 2006, at 9:01 PM, Mark Smith wrote:

> I think the point is that when a variable is passed to a function/ 
> handler 'normally', the data in it is duplicated, and if the data  
> is big, this is not as efficient as passing it by reference -  
> obviously, if you need to change the data in the called function/ 
> handler, this may have unwanted side-effects, in  which case  
> passing it normally is going to be better.

The problem you raise here is handled in more traditional languages  
by declaring the reference to be constant.  It strikes me that it  
would not be a big change to expand the use of the "constant"  
keyword.  Then in situations such as Sarah was talking about the  
handler/function would be declared as not changing the referred to  
variable, something like

on myHandler constant @pByReferenceParameter
   -- following then should cause compiler error
   add 1 to @pByReferenceParameter
end myHandler

There is, of course, another use for references besides the  
efficiency of not having to copy large data structures: returning  
more than one value.  This use doesn't suffer from the concern Sarah  
raises about having external effects as, when used this way, the  
parameter passed in should be empty.  There isn't, of course, any  
guarantee of this other than the caller being careful and writer of  
the called function being careful to document that the parameter is  
used for output only.

Spence

James P. Spencer
Rochester, MN

jspencer78 at mac.com

"Badges??  We don't need no stinkin badges!"




More information about the use-livecode mailing list