Ошибка Flex: - 1151: существует конфликт с определением obj_inst1 во внутреннем пространстве имен - PullRequest
0 голосов
/ 16 июня 2010

Я написал такую ​​функцию, как

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 Ответ

3 голосов
/ 16 июня 2010
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);
...