在ActionScript中,是否有方法检查输入参数是否是任何类型的有效Vector?

问题描述:

在下面的代码:在ActionScript中,是否有方法检查输入参数是否是任何类型的有效Vector?

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); 
... 

我正在寻找的是类似_var is Vector.<*>

Vector.<*>是不是一个有效的表达,甚至载体。不能放在操作员的右侧。

有没有办法来检查输入参数是否是任何类型的有效矢量?

这是一个应该工作的方法。我相信有必要(当然?)是一个更好的方式,不使用字符串,但这种方法应该让你度过。

/** 
* 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

很不错的代码! – 2010-04-28 11:19:30

这也似乎工作,虽然我很不高兴能不能使用(候选人是矢量)可靠。

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

    return result; 
}