ДействиеСценарий / Говнокод #491 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
public static function cleanArray(a:Array):void
{ 
  var size:Number = new Number(a.length);
  for (var i:int = 0; i < size; ++i)
  {
    a.pop();
  }
}

очистка массива

Запостил: guest guest, (Updated )

Комментарии (19) RSS

  • Mikle:
    хм. Не понимаю, зачем использовать Pop??? нельзя обнулить массив или просто удалить и создать новый?
    Ответить
    • Потому что массив передается в функцию, а метода такого «очистить» просто нет у массива
      Ответить
        • a.length — это свойство только для чтения (во всяком случае в haXe это так, что скорей всего и в самой реализации AVM2 так же)
          Ответить
          • попробуй:
            var arr:Array = [1, 2, 3];
            trace(arr.length);
            arr.length = 0;
            trace(arr.length);
            Ответить
            • в haXe именно только чтение, как в флеше проверить не имею возможности. У меня компилятор ругается при попытке такое произвести.
              Ответить
              • Тестил:
                var arr:Array = [1, 2, 3];
                trace(arr.length);//3
                arr.length = 0;
                trace(arr.length);//0
                trace(arr);//ничего соответсвенно
                но можно ведь к свойству не обращаться, мона просто arr=[];
                так что...
                Ответить
    • Нельзя чистить массив методом array = []; (выделяется новая память). Попробуйте 100 крупных массивов занулить таким образом.

      Чистить do { array.pop() } while(array.length > 0)
      Ответить
  • В данном случае new Number в цикле - это пиндык. А если у меня 10000 элементов в массиве? Флеш 10 тыщ раз выделит память для создания экземпляра класса Number.
    Ответить
  • Это вы пиндык.
    arr.splice(0,arr.length);

    Но всё таки лучше arr=[], GC сделает остальное.
    Ответить
  • Может он передает расширенный класс от Array, и оверрайден метод pop?! KianuFrustratedFace.jpeg
    Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8