First Flash Builder 4 disappointment - Vector


Matt - Posted on 11 June 2009

When I read that Adobe were adding strongly typed arrays to the SDK, I was overjoyed.  This functionality alone would save me days of time on every project, as well as allowing code hint to show me what operations I can perform on the array elements.

But alas, it doesn’t quite hit the mark. 

You can easily specify the element type of a vector:

var vect:Vector.<Sprite> = new Vector.<Sprite>();

But as stated in the documentation, the push method (which is the only way of adding a new element to a Vector without doing some clumsy coding) DOES NOT do type checking at compile time:

“Because this function can accept multiple arguments, the data type of the arguments is not checked at compile time even in strict mode”

So this compiles fine:

var vect:Vector.<Sprite> = new Vector.<Sprite>();
vect.push(new Skin());

Admittedly this will throw a run-time error, but that’s not really good enough.

In Adobe's defense, this will fail at compile time:

var vect:Vector.<Sprite> = new Vector.<Sprite>();
vect[0] = new Skin();

Additionally, code hints for the most part pick up the type, but it’s just not where it needs to be IMO.

About the author

Matthew Butt is an experienced developer, software architect and development manager. For more information, review the About page.