Re: [Flashcoders] Variable scope within for loops: reusing iterator variables
besides, the compiler only warns you that you're about the overwrite the variable, by re-assigning it. In case of 2 loops(where the variable is only used within the loop), it doesn't have any real consequences. On Mon, Mar 24, 2008 at 4:56 PM, Cory Petosky <[EMAIL PROTECTED]> wrote: > Jonathon: > > In any other language, the scope would be as you describe. AS3 doesn't > have block-level scoping -- the most local scope is always the > function. Declaring a variable anywhere but the first line of a > function is a lie -- the VM declares all variables as the first set of > operations after pushing the function call on the stack. > > On Mon, Mar 24, 2008 at 7:36 AM, Andrew Sinning <[EMAIL PROTECTED]> > wrote: > > You are correct Jonathan, but loop blocks are delimited by brackets, so > > the "for ( ... )" declaration is outside of the loop block. > > > > > > jonathan howe wrote: > > > I had always thought that the scope of variables declared in the > > > initialization part of the for loop were local to the loop block > > > > > > > > ___ > > Flashcoders mailing list > > Flashcoders@chattyfig.figleaf.com > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > > > > > > -- > Cory Petosky : Lead Developer : PUNY > 1618 Central Ave NE Suite 130 > Minneapolis, MN 55413 > Office: 612.216.3924 > Mobile: 240.422.9652 > Fax: 612.605.9216 > http://www.punyentertainment.com > ___ > Flashcoders mailing list > Flashcoders@chattyfig.figleaf.com > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > -- M.A. van't Kruis http://www.malatze.nl/ ___ Flashcoders mailing list Flashcoders@chattyfig.figleaf.com http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Re: [Flashcoders] Variable scope within for loops: reusing iterator variables
Jonathon: In any other language, the scope would be as you describe. AS3 doesn't have block-level scoping -- the most local scope is always the function. Declaring a variable anywhere but the first line of a function is a lie -- the VM declares all variables as the first set of operations after pushing the function call on the stack. On Mon, Mar 24, 2008 at 7:36 AM, Andrew Sinning <[EMAIL PROTECTED]> wrote: > You are correct Jonathan, but loop blocks are delimited by brackets, so > the "for ( ... )" declaration is outside of the loop block. > > > jonathan howe wrote: > > I had always thought that the scope of variables declared in the > > initialization part of the for loop were local to the loop block > > > > ___ > Flashcoders mailing list > Flashcoders@chattyfig.figleaf.com > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > -- Cory Petosky : Lead Developer : PUNY 1618 Central Ave NE Suite 130 Minneapolis, MN 55413 Office: 612.216.3924 Mobile: 240.422.9652 Fax: 612.605.9216 http://www.punyentertainment.com ___ Flashcoders mailing list Flashcoders@chattyfig.figleaf.com http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Re: [Flashcoders] Variable scope within for loops: reusing iterator variables
You are correct Jonathan, but loop blocks are delimited by brackets, so the "for ( ... )" declaration is outside of the loop block. jonathan howe wrote: I had always thought that the scope of variables declared in the initialization part of the for loop were local to the loop block ___ Flashcoders mailing list Flashcoders@chattyfig.figleaf.com http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
RE: [Flashcoders] Variable scope within for loops: reusing iterator variables
jonathan howe wrote: > I was hoping someone could explain why I get "Warning: 3596: Duplicate > variable definition." warnings when I reuse an iterator variable. > Example: > > for (var i:int = 0; i < someArray.length; i ++) { > // do something cool > } > > for (var i:int = 0; i < someOtherArray.length; i ++) { > // do something even cooler > } The first time you declare the var i, it is in scope for the rest of the function, not the loop. Think of it this way: function someFunc():void { . . . var i:int; for (i = 0; i < someArray.length; i ++) { // do something cool } for (i = 0; i < someOtherArray.length; i ++) { // do something even cooler } } Make sense? Cordially, Kerry Thompson ___ Flashcoders mailing list Flashcoders@chattyfig.figleaf.com http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
[Flashcoders] Variable scope within for loops: reusing iterator variables
I was hoping someone could explain why I get "Warning: 3596: Duplicate variable definition." warnings when I reuse an iterator variable. Example: for (var i:int = 0; i < someArray.length; i ++) { // do something cool } for (var i:int = 0; i < someOtherArray.length; i ++) { // do something even cooler } I had always thought that the scope of variables declared in the initialization part of the for loop were local to the loop block, not the block containing the loop. So I guess that is not true... does this mean the second time I use the loop I have to omit the declaration? Or is there a keyword I can use to keep the instantiation local to the for block? Seems like it would be clunky if I was cutting and pasting blocks of code in different orders, I'd have to keep track of who was the first for loop of any code block (an admittedly minor annoyance, since I don't have stacks and stacks of loops, but still...) Thanks in advance, -jonathan -- -jonathan howe :: 404.434.2321 :: 180 High St Apt 26 Portland, ME 04101 ___ Flashcoders mailing list Flashcoders@chattyfig.figleaf.com http://chattyfig.figleaf.com/mailman/listinfo/flashcoders