On 03/29/2011 11:31 PM, [email protected] wrote:
> for (var i =0; i< 30; i=i+1) # number of objects is 30
>
> is superior to
>
> var number_of_objects = 30;
> for (var i = 0; i < number_of_objects; i = i+1)
No it isn't. Variable references aren't garbage (well, they aren't
heap blocks, though they do get traced). The things they point to are
garbage, and a number isn't a reference in Nasal. The "30" in the
second example gets stored (as a double) directly in the hash record
in place of the pointer that would be there if it were a reference.
The "var" syntax has no meaning as far as allocation. It's about scoping,
it says "make this a local variable in the current function no matter what
outer scope it might also be in".
The operations in Nasal that create heap blocks/garbage are:
1. String composition with the "." operator
2. Vector creation with a "[...]" expression
3. Hash creation with a "{...}" expression
4. Function calls (which create a hash for the namespace)
5. Closure binding with a "func ..." expression.
I believe that's all of it, though I may have forgotten something.
Andy
------------------------------------------------------------------------------
Create and publish websites with WebMatrix
Use the most popular FREE web apps or write code yourself;
WebMatrix provides all the features you need to develop and
publish your website. http://p.sf.net/sfu/ms-webmatrix-sf
_______________________________________________
Flightgear-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/flightgear-devel