![]() |
Количество элементов в массиве
Добрый день, как можно посчитать элементы массива?
Делал вот так: Код AS3:
|
Какая ещё ошибка? Никаких ошибок!
Код AS3:
|
Не всегда
Код AS3:
Код AS3:
|
Цитата:
|
Цитата:
готов поспорить, что она не связана с количеством элементов в массиве Цитата:
Не так же? |
Код AS3:
|
http://help.adobe.com/en_US/FlashPla...t/3/Array.html
К вопросу о первом "trace(s.length); // 6": Цитата:
Цитата:
|
WisP Спорить с Вами не стану, потому как это я и имел ввиду что если редактировать массив в ручном режиме ( не используя команды push, pop, shift и т.д. ( ну и естественно заполнение циклом или "индуским" методом )) то получиться то что получается у ТС. Других идей у меня нет почему у человека может выдавать "ошибку" arr.length кроме того что идет не правильный подход в использовании массива.
|
Цитата:
|
О чем спорить-то))) Я просто указал на пару "стратегических" мест в коде и дал линк на статью, с которой не помешало бы ТС ознакомиться. Чтобы "мистические" ошибки не мешали работе.
|
Цитата:
|
Текст ошибки в студию.
|
Когда говорят про элементы массива, то имеют в виду именно то, что находится в array.length. Если у вас есть какие-то дополнительные требования, например, вам нужны только уникальные элементы, только те, которые не равны null / undefined и т.п. - это нужно уточнять, иначе вас не поймут.
|
Цитата:
Код AS3:
|
А с чего вы взяли, что в arr.length именно 0.
Позволю себе повторить цитату: Although ActionScript permits you to create associative arrays using the Array class, you cannot use any of the Array class methods or properties with associative arrays. |
Цитата:
|
@WisP, вы же сами это написали :)
Цитата:
|
AlexLucas, ну так написано же: нельзя использовать методы или свойства класса Array с ассоциативными массивами.
В том числе, как только вопреки здравому смыслу возникло желание добавить строковый ключ, length использовать нельзя и обсуждение результата, который возвращает length уже не имеет смысла. |
Цитата:
|
Не нельзя, а не рекомендуется, раз ошибку не выдаёт - значит можно. И результат в том случае всегда будет 0.
|
iNils прошу прощения. А где элемент с индексом 't'?
Код AS3:
|
Цитата:
|
Цитата:
У MovieClip нет свойства length, но можно написать так Код AS3:
|
iNils Согласен с Вами и признаю что считал запись вида
Код AS3:
|
Цитата:
Поведение которое вы видите не типично для массивов вообще, и является случайным артефактом, продуктом наследования + специфики реализации динамического доступа. Лучше об этом думать как о методе `[]` определенном на классе Array таким образом, что будучи вызваным со строкой в качестве индекса не вернет элемент по индексу, а значение динамически созданного свойства. |
Вспомнился давний холивар на тему "массивы в AS индексируются строками". Что-то тогда много всякого наговорили.. правда, AS 3.0 тогда еще не было вроде даже.
Код AS3:
|
Цитата:
Код:
uint32 ArrayObject::get_length() const { Код:
uint32 ArrayObject::AS3_push(Atom* argv, int argc) {Добавлено через 2 часа 58 минут Результаты тестов: 0 => 987, 987, 0 1000 => 987, 987, 0 10000000 => 1929, 1929, 0 Код AS3:
|
| Часовой пояс GMT +4, время: 23:08. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.