gpt4 book ai didi

apache-flex - Actionscript 编译器问题 : Error #1068: Array and * cannot be reconciled

转载 作者:行者123 更新时间:2023-12-04 02:45:10 27 4
gpt4 key购买 nike

我的 Flex 项目 (AS3) 中出现了一个非常奇怪的调用堆栈。

Main Thread (Suspended: 
VerifyError: Error #1068: Array and * cannot be reconciled.)

我能够使用这段代码重现它。如果你调试,你永远不会进入“失败”功能。

private var testArray:Array = [{},{},{}]

private function run():void {
this.failure({});
}

private function failure(o:Object):void {
for each(var el:Object in testArray) {
o.ids = (o.ids||[]).concat(getArray());
}
}

private function getArray():Array { return [Math.random()]; }

当我运行程序时,这个调用堆栈是一行,但是这个控制台显示一团糟,好像它是一个段错误:

> verify monkeyTest/failure()
> stack:
> scope: [global Object$ flash.events::EventDispatcher$
> flash.display::DisplayObject$
> flash.display::InteractiveObject$
> flash.display::DisplayObjectContainer$
> flash.display::Sprite$
> mx.core::FlexSprite$
> mx.core::UIComponent$
> mx.core::Container$
> mx.core::LayoutContainer$
> mx.core::Application$ monkeyTest$]
> locals: monkeyTest Object? * * *

有什么建议吗?干杯。

编辑:

此代码不会产生错误:

private function failure(o:Object):void {
for each(var el:Object in testArray) {
o.ids = o.ids || [];
o.ids = o.ids.concat(getArray());
}
}

最佳答案

问题出在这里:

o.ids = (o.ids||[]).concat(getArray());

o.ids 是类型*[]Array,所以它们不能比较

将其更改为:

o.ids = ((o.ids as Array)||[]).concat(getArray());

关于apache-flex - Actionscript 编译器问题 : Error #1068: Array and * cannot be reconciled,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1463995/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com