- type
- class
Nape list of Edge type objects
Internally this list is at present implemented as a linked list with object pooled nodes and iterators with various fast paths made for standard access patterns (For instance accessing successive elements runs in constant time when using random access functions)
Iteration of this list can be done in various ways, but the preferred way on all targets, is through use of the foreach function:
In AS3, a closure would need to be created in general, so for performance reasons you 'may' choose to use iteration as follows:
NOTE: It is 'not' safe to modify a list whilst iterating over it. If you wish to remove elements during an iteration you should use the filter method, for example:
In AS3, if you wish to avoid a closure generation, you can perform such an iteration in a safe manner as follows:
Internally this list is at present implemented as a linked list with object pooled nodes and iterators with various fast paths made for standard access patterns (For instance accessing successive elements runs in constant time when using random access functions)
Iteration of this list can be done in various ways, but the preferred way on all targets, is through use of the foreach function:
list.foreach(function (obj) { });This method is inlined so that in haxe no closure will need to be created.
In AS3, a closure would need to be created in general, so for performance reasons you 'may' choose to use iteration as follows:
for (var i:int = 0; i < list.length; i++) { var obj:Edge = list.at(i); }
NOTE: It is 'not' safe to modify a list whilst iterating over it. If you wish to remove elements during an iteration you should use the filter method, for example:
list.filter(function (obj) { // operate on object. // ... return (false if you want object to be removed); });
In AS3, if you wish to avoid a closure generation, you can perform such an iteration in a safe manner as follows:
var i:int = 0; while (i < list.length) { var obj:Edge = list.at(i); // operate on object. // ... if (should remove obj) { list.remove(obj); continue; } else i++; }Or if you are always clearing the list entirely you could write:
while (!list.empty()) { var obj:Edge = list.pop(); // operate on object. // ... }