<div dir="ltr"><div>I suggest you try how long the declaration takes (I don't think it is significant). But using global/public variables for loops is bad idea.</div><div>Just think what happens when you call function inside of some loop and they both happen to use the same variable (or the function call something else which do it).</div><div> This will create bug that can be really hard to debug.</div><div><br></div><div><br></div><div>Jussi<br></div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Dec 12, 2018 at 11:36 AM Rolf-Werner Eilert <<a href="mailto:rwe-sse@osnanet.de">rwe-sse@osnanet.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Doesn't that slow down a bit?<br>
<br>
I know, on today's CPUs it may not be an instant drawback, but just <br>
consider what happens if such a function is called hundreds or thousand <br>
of times whithin a larger scope. Then redefining the variable will <br>
quickly grow exponentially.<br>
<br>
Just image TableView_Data, which rebuilds the whole table whenever the <br>
user moves something on the screen. Each time the Data event is called <br>
for every single cell of the table. In cases where I need such variables <br>
there, I define them globally and just re-use them.<br>
<br>
In my code, I define counting variables in the function they are used <br>
in. But object variables which are used very frequently I define once on <br>
module level and reuse them rather than defining them over and over <br>
again. It's this feeling that it takes a lot of pushing values forth and <br>
back, storing, deleting, garbage collection stuff... I just feel more <br>
secure knowing that a variable is redefined 20 times than 20,000 times <br>
during runtime.<br>
<br>
Regards<br>
Rolf<br>
<br>
<br>
<br>
<br>
Am 12.12.18 um 00:38 schrieb Jussi Lahtinen:<br>
> Every time you redefine it, it is redefined. And depending on <br>
> implementation the variable could be valid only inside of the loop. If <br>
> not, then it is what it is defined.<br>
> <br>
> For idx as integer = 0 to things.max<br>
>     dosomething(thing[idx])<br>
> next<br>
> <br>
> Above idx is integer.<br>
> <br>
> ...<br>
> For idx = 0 to others.max<br>
>     dosomthingelse(others[idx])<br>
> next<br>
> <br>
> Above idx is either undeclared or integer, depending on implementation.<br>
> <br>
> ...<br>
> For each idx as float in floatarray<br>
>     dowhatever(idx)<br>
> <br>
> Above idx is float.<br>
> <br>
> <br>
> Jussi<br>
> <br>
> <br>
> On Wed, Dec 12, 2018 at 1:31 AM Bruce <<a href="mailto:adamnt42@gmail.com" target="_blank">adamnt42@gmail.com</a> <br>
> <mailto:<a href="mailto:adamnt42@gmail.com" target="_blank">adamnt42@gmail.com</a>>> wrote:<br>
> <br>
>     Well, I haven't tried it yet but a few things pop into my mind.<br>
> <br>
>     Consider a method that has lots of use of "throw away"<br>
>     indexers/iterators,<br>
>     For idx as integer = 0 to things.max<br>
>         dosomething(thing[idx])<br>
>     next<br>
>     ...<br>
>     For idx = 0 to others.max<br>
>         dosomthingelse(others[idx])<br>
>     next<br>
>     ...<br>
>     For each idx as float in floatarray<br>
>         dowhatever(idx)<br>
> <br>
>     etc<br>
>     Is it going to redefine idx each time?<br>
> <br>
>     b<br>
> <br>
>     On 12/12/18 9:46 am, Benoît Minisini wrote:<br>
>      > Le 12/12/2018 à 00:11, Jussi Lahtinen a écrit :<br>
>      >> Why would it be harder to debug?<br>
>      >> David gave great example of it usage (pretty much only case where I<br>
>      >> use it) and I think it only makes code more readable and less scope<br>
>      >> for the variable.<br>
>      >><br>
>      >><br>
>      >> Jussi<br>
>      >><br>
>      ><br>
>      > Because as soon as variables can be declared anywhere, people<br>
>     will start<br>
>      > to use that for writing ugly code. :-)<br>
>      ><br>
> <br>
>     ----[ Gambas mailing-list is hosted by <a href="https://www.hostsharing.net" rel="noreferrer" target="_blank">https://www.hostsharing.net</a> ]----<br>
> <br>
> <br>
> <br>
> ----[ Gambas mailing-list is hosted by <a href="https://www.hostsharing.net" rel="noreferrer" target="_blank">https://www.hostsharing.net</a> ]----<br>
> <br>
<br>
<br>
----[ Gambas mailing-list is hosted by <a href="https://www.hostsharing.net" rel="noreferrer" target="_blank">https://www.hostsharing.net</a> ]----<br>
</blockquote></div>