Alex Tweedly wrote:
This very simple script doesn't work. Question is whether it should or not ?
command increment @p
   add 1 to p
end increment

on mouseUp
   local t, tA
   put 2 into t
   increment t
   put t &CR after msg

   put 5 into tA[1]
   increment tA[1]
   put tA[1] &CR after msg

end mouseUp
Intutively, to me, it should work. The element of the array can be
treated just like a simple variable - use its value, assign to it, etc.
-  but it cannot be used as the actual parameter to a pass-by-reference
parameter.

I can't find anywhere in the documentation that says that - but I can't
actually find anywhere that it would say that - the docs I've found are
pretty quiet on the subject of what an array is, or what an element is.

Is this a deficiency you would expect ?
Or should I submit as a bug/request ?

I would have expected it, but I can see value in allowing what you suggest. I'm just not sure how to go about it.

Args are evaluated before being passed in, so:

   increment tA[1]

...becomes:

   increment (the value of element "1" in the array tA)

One option for passing the array would be to pass the whole thing with a specifier for the element to be affected as a separate argument:

  increment tA, 1

But you've probably already considered that.

So we have a question: if enough folks find this sort of suggested syntax useful, by what syntactic means could we tell the interpreter not to evaluate the argument?

--
 Richard Gaskin
 Fourth World
 LiveCode training and consulting: http://www.fourthworld.com
 Webzine for LiveCode developers: http://www.LiveCodeJournal.com
 Follow me on Twitter:  http://twitter.com/FourthWorldSys

_______________________________________________
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