在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;
}
答
这也似乎工作,虽然我很不高兴能不能使用(候选人是矢量)可靠。
private function isVector(candidate : *) : Boolean
{
var result : Boolean;
try
{
Vector.<*>(candidate).length;
result = true;
}
catch (error : Error)
{
result = false;
}
return result;
}
很不错的代码! – 2010-04-28 11:19:30