The value returned in the previous scenario (basing the return on 10 being the number used) is 20. The final doubling disappears.
On Fri, Nov 14, 2014 at 10:40 AM, Mike Bonner <bonnm...@gmail.com> wrote: > For anything other than this simple case, the returns matter. > > Take for example > > local tvar1,tvar2,tvar3 > on mouseUp > --get a random value to use > put random(10) into tvar1 > put "Start Value: " & tvar1 & cr & "Final Return:" & myfunc1(tvar1) & > cr & tvar3 > end mouseUp > > function myfunc1 pvar > put 2 * myfunc2(pvar) into tVar2 > return tvar2 > > end myfunc1 > > function myfunc2 pvar > put pvar * 2 into tvar3 > return tvar3 > end myfunc2 > > With this function, if the random number is 10, the value returned from > the function is 40, doubled twice once by each function. > the double in the 3rd function happens PRIOR to the execution of the > second function (the end of the chain is first working backwards) > So tvar3 (in the last function) is the first double, so the value in tvar3 > will be 20. Then the other double is done and placed into tvar2. So the > value returned will be 40. > > If you remove the return from myfunc1, the final doubling isn't returned. > The value of tvar2 IS 40, but its never returned, so you end up with an > unanticipated return, the return (which as discovered earlier) is "the > result" from the whole chain. Since the only actual result is from > muFunc2, that is the value that ends up being returned to the original > function call. > > On Fri, Nov 14, 2014 at 10:02 AM, Jacques Hausser <jacques.haus...@unil.ch > > wrote: > >> Yes, it is ’the Result’, I just checked it - good hint, Dave ! didn’t >> think about that before… >> >> Jacques >> >> > Le 14 nov. 2014 à 17:56, Dave Cragg <dave.cr...@lacscentre.co.uk> a >> écrit : >> > >> > Tiemo, >> > >> > Interesting. It looks like functions return the value of "the result" >> in the absence of a return statement. >> > >> > Other languages would probably return "void" or "null" or something >> similar, and we might expect Livecode to return "empty". >> > >> > I've no opinion on whether it is a bug or not, but I think it is >> probably better to specifically return a value from a function. We don't >> always have control over what appears in "the result". >> > >> > Cheers >> > Dave >> > >> > >> > >> > On 14 Nov 2014, at 08:47, Tiemo Hollmann TB <toolb...@kestner.de> >> wrote: >> > >> >> 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@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@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode