Ruud H.G. van Tol on Tue, 11 Mar 2025 16:00:21 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: calling by reference |
On 2025-03-11 15:46, Bill Allombert wrote:
On Tue, Mar 11, 2025 at 03:27:28PM +0100, Ruud H.G. van Tol wrote:The user manual states: 2.7.2 [...] If an argument is prefixed by a tilde ~ in the function declaration and the call, it is passed by reference. (If either the declaration or the call is missing a tilde, we revert to a call by value.)Actually it depends if the variable is lexically or dynamically scoped. Please do not forget the ~!
But with a dynamically scoped L:? L=List([1,2,3]); print(L); listinsert(L,42,1); print(L); listpop(L,2); print(L);
List([1, 2, 3]) List([42, 1, 2, 3]) List([42, 2, 3]) the missing ~ appears to work fine. I normally avoid using non-lexically scoped variables, and I generally code with the ~, so I was never bitten by this, but then I got asked why I was doing that. :) (so I did some tests and got surprised) -- Ruud