我有一个班级如下:
class com.flightstatus.SpecificationFlight
{
public var Airline:Airline;
public var FlightNumber:String;
public var SearchCodeshares:Boolean;
public var SearchCodesharesSpecified:Boolean;
public var TailNumber:String;
}
现在我想创建一个上面类型的数组,如下所示: var myArr:SpecificationFlight = new Array();
这种类型非常重要,因为它将通过webservice发送。
这在AS3中是否可行?如果是这样,我是否可以仅将此功能导入AS2并使用它。
答案 0 :(得分:0)
您的代码是AS2,而不是AS3,在AS3中,您不能使用名称中的句点声明类,而是使用包。 (从技术上讲,这不准确,如果在编译后更改字节码,你可能会在名称中有句号,但我怀疑你的意思。)
AS2没有类型化数组,即它只有一个Array类,它可以包含任何类型的对象。但是,您可以为自定义类定义__resolve(x)
方法,并且只允许从yourClassInstance[x]
代码返回特定类型的对象。遗憾的是,您无法控制分配给yourClassInstance[x]
的对象的类型。
在AS3中,自Flash Player 10以来有一个Vector.<T>
类。显然,这个类用于创建某种类型的向量。
在可以编译为AS2和AS3的Haxe语言中有类型数组,但如果您通过反射或通过其他未使用Haxe编译的其他代码访问已编译的代码,则会在语言(编译器)级别强制执行。 ,然后数组仍然是无类型的(非常类似于Java中的泛型工作)。
PS。在AS的任一变体中对变量的名称使用Pascal案例是非常违反直觉的,类字段通常是驼峰式的(甚至代码突出显示器假设它们是类名,而不是变量名)。使用公共变量我们通常也是一个坏主意,但它不一定是坏的,取决于上下文,但我当然会感到震惊。