2010-04-23 13 views
6

:ActionScript'te, bir girdi bağımsız değişkeninin geçerli herhangi bir Vector olup olmadığını kontrol etmenin bir yolu var mı? Aşağıdaki kodda

var a:Vector.<int> ... 
var b:Vector.<String> ... 
var c:Vector.<uint> ... 
var c:Vector.<MyOwnClass> ... 

function verifyArrayLike(arr:*):Boolean 
{ 
    return (arr is Array || arr is Vector) 
} 

verifyArrayLike(a); 
verifyArrayLike(b); 
... 

Ne aradığım _var is Vector.<*>

Ama Vector.<*> gibi bir şey geçerli bir ifadedir, hatta Vektör değil mi. Operatörlerin sağ tarafında yerleştirilemez.

Bir girdi bağımsız değişkeninin geçerli herhangi bir Vector olup olmadığını kontrol etmenin bir yolu var mı?

cevap

4

Çalışması gereken bir yöntem. Eminim orada (kesinlikle?) Dizeleri kullanmayan daha iyi bir yol olmalı, ama bu yöntem size gelmeli.

/** 
* Finds out if an object is a generic Vector. 
* It works because the value returned for getQualifiedClassName(a vector) 
* is "__AS3__.vec::Vector.<the vector's type>". 
* @param object Object Any object. 
* @return Boolean True if the object is a generic Vector, false otherwise. 
*/ 
function isVector(object:Object):Boolean 
{ 
    var class_name:String = getQualifiedClassName(object); 
    return class_name.indexOf("__AS3__.vec::Vector.") === 0; 
} 
+0

Çok güzel kod! –

0

Bu, işe yaramayacak olmama konusunda çok mutsuz olduğum halde (aday Vector'dir) güvenilir bir şekilde çalışıyor gibi görünüyor.

private function isVector(candidate : *) : Boolean 
{ 
    var result : Boolean; 
    try 
    { 
     Vector.<*>(candidate).length; 
     result = true; 
    } 
    catch (error : Error) 
    { 
     result = false; 
    } 

    return result; 
} 
İlgili konular