AW: how are variables passed from functions?

Tiemo Hollmann TB toolbook at kestner.de
Fri Nov 14 10:39:03 EST 2014


Hi Craig,
I wasn't aware of this behaviour.
I think about more complex functions with a lot of if and else structures,
where you are perhaps not aware anymore of this function chain after some
years, when you are changing the first or the second function?
Would it be a good or at least not a bad practice to put a return in the
intermediate function? Or could it even break anything if you would
explicitly return myVar2 in the first function?
Thanks
Tiemo



> -----Ursprüngliche Nachricht-----
> Von: use-livecode [mailto:use-livecode-bounces at lists.runrev.com] Im
Auftrag
> von dunbarx at aol.com
> Gesendet: Freitag, 14. November 2014 16:12
> An: use-livecode at lists.runrev.com
> Betreff: Re: how are variables passed from functions?
> 
> I don't see any anomaly here. Since the intermediate function calls yet
> another function, it never needs to "close", that is, return, a value. It
is a
> pass-through entity, a card carrying member of the chain of handler calls.
> Step through this variation:
> 
> 
> 
> on mouseUp
>     put double(2) into myVar1
> answer myVar1
> end mouseUp
> 
> 
> function double var
>    put redouble(var * 2) into myVar2 -- no return in this function
> end double
> 
> 
> function redouble var
>    return var * 2
> end redouble
> 
> 
> The "8" you get is processed sequentially through the handler path, just
like
> bacon.
> 
> 
> Craig Newman
> 
> 
> 
> -----Original Message-----
> From: Tiemo Hollmann TB <toolbook at kestner.de>
> To: 'How to use LiveCode' <use-livecode at lists.runrev.com>
> Sent: Fri, Nov 14, 2014 3:47 am
> Subject: how are variables passed from functions?
> 
> 
> By accident I noticed that I don't have a return at a certain point of a
> function but nevertheless the value was passed back without a return to
the
> calling handler.
> 
> I can reproduce the issue to this scenario:
> 
> 
> 
> --Btn script
> 
> on mouseUp
> 
>     put foo1() into myVar1 -- I get the value "Test"
> 
> end mouseUp
> 
> 
> 
> --script in stack
> 
> function foo1
> 
>    put foo2() into myVar2 -- no return in this function
> 
> end foo1
> 
> 
> 
> function foo2
> 
>    return "Test" -- return here in second level
> 
> end foo2
> 
> 
> 
> Up to now I thought that every function has to have a return statement if
> you want anything getting back.
> 
> Can somebody explain to me what is going on here? How is the value from
> function foo2 passed back to the mouseup handler, even with different var
> names?
> 
> Is this a bug or just an accident or even wanted?
> 
> Thanks for enlightening
> 
> Tiemo
> 
> 
> 
> 
> 
> 
> 
> 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
subscription
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
> 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
subscription
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the use-livecode mailing list