我写了一个像
这样的函数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.
答案 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);