Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Action script 2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=49)
-   -   Hashtable (http://www.flasher.ru/forum/showthread.php?t=59222)

olkina 11.06.2004 02:52

Hashtable
 
В ActionScript правда нет Hashtable или я просто невнимательно читаю (R)TFM?

Dindin 11.06.2004 03:05

Это смотря для чего ты хочешь HashTable использовать :)

olkina 11.06.2004 03:07

Для того чтобы было удобно находить значение по ключу.

Dindin 11.06.2004 03:21

Есть ассоциированные массивы:
Код:

Object.prototype.setHand = function(tool, worker) {       
        this.tool = tool;
        this.worker = worker;
};
obj = new Array();
obj['param1'] = new setHand(true, false);
obj['param2'] = new setHand(false, true);
obj['controller'] = new setHand(true, true);
for (element in obj) {
        trace("obj['"+element+"']:");
        trace('tool='+obj[element].tool);
        trace('worker='+obj[element].worker);
}


olkina 11.06.2004 03:33

Вот. А почему-то побоялась ими пользоваться. В Help-е я про них ничего не нашла и решила, что они какие-то недоработанные, типа побочного эффекта обычного массива.

Мои подозрения подкрепилмсь тем, что сколько бы я элементов таким образом ни добавляла, длина массива все равно остается равной нулю. Исключение составляли те случаи, когда в самом ключе содержалось число - например, если я добавляю элемент по ключу "id_21", то длина массива сразу станет равной 22, даже если я добавила только два элемента.

Фух.

Dindin 11.06.2004 03:50

Цитата:

Оригинал написал(а) olkina
Исключение составляли те случаи, когда в самом ключе содержалось число - например, если я добавляю элемент по ключу "id_21", то длина массива сразу станет равной 22, даже если я добавила только два элемента.
Фух.

Странный эффект, у меня такого не наблюдается. Вообще говоря, для ассоциированного массива неприменимо определение его длинны через свойство Array.length:
Цитата:

Array.length
Availability
Flash Player 5.

Usage
my_array.length

Description
Property; a nonzero-based integer specifying the number of elements in the array. This property is automatically updated when new elements are added to the array. When you assign a value to an array element (for example, my_array[index] = value), if index is a number, and index+1 is greater than the length property , the length property is updated to index+1.
Зато, есть очень удобные методы Array.sort() и Array.sortOn().

А свойство Array.length можно переопределить для любого типа массива.

olkina 11.06.2004 04:04

Цитата:

if index is a number, and index+1 is greater than the length property
Да, этот момент я, конечно проморгала. Зато в описании Array class черным по белому написано: An array is an object whose properties are identified by a number representing their position in the array. This number is referred to as the index. И ни одного примера на associative array...

Короче, они тут сами чего-то недоработали.

Anyway, большое спасибо за помощь! :)

Nucer 12.06.2004 01:19

Dindin , не дури людей. Объекты отдельно, массивы отдельно.

iLoveYou 12.06.2004 11:29

Цитата:

Оригинал написал(а) Nucer
Dindin , не дури людей. Объекты отдельно, массивы отдельно.
слыышь, уважаемый :)
раз отдельно, объясни нам, плиз, что такое объект и что такое массив, ага :)

Nucer 12.06.2004 18:35

Ну да, криво сказал. Я имел ввиду, что в классе Array нумерация элементов возможна только цифрами. И что обращение к элементу в классе Array и обращение к любому объекту с переменной в качестве его имени - это разные вещи.


Часовой пояс GMT +4, время: 08:32.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.