PDA

Просмотр полной версии : Не работает класс, расширяющий Array


Appleman
28.02.2018, 18:39
Друзья, подскажите плиз, проблема с использованием класса, расширяющего Array.
Объявлен вот так:

public class ActionLog extends Array
{
public function ActionLog(...rest)
{
super();
}

На этапе компиляции всё нормально. Но при попытке любого использования выдаёт исключение: Error #1056: Cannot create property 0 on model.ActionLog.

Что я делаю не так? Спасибо.

caseyryan
28.02.2018, 19:53
он динамический
public dynamic class ActionLog extends Array
{
public function ActionLog(...rest)
{
super(rest);
}

Appleman
01.03.2018, 00:51
caseyryan, большое спасибо. Не сталкивался пока с динамическими классами. Всё получилось, только один вопрос смущает. Сразу после объявления
private var _actionLog: ActionLog = new ActionLog();
у меня в этом массиве появляется одна запись-пустышка в нулевой позиции. С какого перепугу?

caseyryan
01.03.2018, 06:01
Это мой косяк. В super() ничего нельзя передавать в этом случае.
super(rest); // ошибочно
потому что этот аргумент передается как массив (этот массив и будет первым элементом), а передать vararg в as3 нельзя.
Поэтому единственный вариант здесь - вообще ничего не передавать в конструктор суперкласса, а вместо этого использовать методы push / unshift для того, чтобы заполнять свой массив

Appleman
01.03.2018, 09:50
Угу, я сам уже методом тыка допёр. Спасибо большое. Вчера полдня убил на этот чёртов Array. :)