Flex错误: - 1151:命名空间内部的定义obj_inst1存在冲突

时间:2010-06-16 06:44:30

标签: flex flash actionscript-3 flex3

我写了一个像

这样的函数
private function addSelectedFunc():void
{
    /**
    * Adds newly selected privilegs to assignedPrivileges
    */
    var obj_inst1:Array = obj_inst.selectedItems;

    for each(var obj_inst1:Object in obj_inst1)
       {
        objInstance1Array.addItem(obj_inste);
        }
}

<ov:HPList id="obj_inst" enabled="true" allowMultipleSelection="true" width="164" height="70" dataProvider="{obj_type.selectedItem}"  />    

<ov:HPList id="obj_inst1" enabled="true" allowMultipleSelection="true" width="164" height="70" />

收到错误:1151: A conflict exists with definition obj_inst1 in namespace internal.

1 个答案:

答案 0 :(得分:3)

var obj_inst1:Array = obj_inst.selectedItems;

这会将obj_inst1声明为Array

for each(var obj_inst1:Object in obj_inst1)

这会尝试将obj_inst1重新声明为Object - 编译器自然会感到困惑。为迭代变量使用不同的标识符。

如果您尝试重新声明与首次声明的类型相同的局部变量,则ActionScript编译器不会抱怨(尽管我无法想到执行此操作的正当理由)。

此外,虽然它不会导致此错误,但代码中还有另一个obj_inst1类型为HPList的变量;为所有事物命名都不是一个好习惯obj_inst等。考虑使用在应用程序上下文中更有意义的名称。

//items is again a generic one, you should be able to do better
var items:Array = obj_inst.selectedItems;
for each(var item:Object in items)
{
   objInstance1Array.addItem(item);
}

以下哪项听起来更好?

obj_inst1.function1(obj_inst2.var3);
//or
employees.addItem(dept.head);