Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как запихать Vector в Dictionary (http://www.flasher.ru/forum/showthread.php?t=215588)

Appleman 24.05.2018 12:26

Как запихать Vector в Dictionary
 
Друзья!

Столкнулся с такой проблемой. Хочу добавить в Dictionary вектор. Код:
Код AS3:

_blockedBy["test_status"] = new Vector.<String> ("test");

создаёт запись в Dictionary, но при попытке получить её по ключу приходит пустота.

Вариант
Код AS3:

_blockedBy["test_status"] = new Vector.<String> ["test"];

приводит к исключению [Fault] exception, information=TypeError: Error #1007: Instantiation attempted on a non-constructor.

На этом мои мысли закончились. Но самое удивительное, что вариант с Array вместо Vector прекрасно работает. Чудеса!

Tails 24.05.2018 12:47

Раньше постоянно забывал литерал объявления предварительно заполненного вектора, каждый раз в справку лез:
Код AS3:

// var v:Vector.<T> = new <T>[E0, ..., En-1 ,];
// For example:
var v:Vector.<int> = new <int>[0,1,2,];

https://help.adobe.com/ru_RU/FlashPl....html#Vector()

Appleman 24.05.2018 13:03

Tails, спасибо. Это я тоже видел в хелпе. А записывать-то как? Вот так что ли фигачить?

Код AS3:

_blockedBy["test_status"] = var v:Vector.<String> = new <String> ["test", "test1"];


Tails 24.05.2018 13:04

Код AS3:

_blockedBy["test_status"] = new <String>["test", "test1"];


Appleman 24.05.2018 13:08

Всё! Вот теперь получилось. Большое спасибо!

Wolsh 24.05.2018 13:12

я так и не привык визуально к этой записи и делаю по старинке
Код AS3:

var v:Vector.<String> = Vector.<String>(["test", "test1"]);


caseyryan 24.05.2018 20:33

Цитата:

Сообщение от Wolsh (Сообщение 1205356)
я так и не привык визуально к этой записи и делаю по старинке
Код AS3:

var v:Vector.<String> = Vector.<String>(["test", "test1"]);


Видимо, это все-таки не одно и то же. В первом случае вектор сразу создается с нужными элементами, а в твоем случае сначала создается массив, на основе которого, потом создается вектор. То есть такой оверхед. Ну, это по моей теории :D

Wolsh 24.05.2018 21:01

Ну да, это же преобразование, а не вызов конструктора через new.
Мне удобно так — больше однообразия, да и массив реально мог быть создан ранее и в другом месте.
XMLоподобная запись в треугольных скобках меня спотыкает.

Appleman 25.05.2018 09:55

Цитата:

Сообщение от Wolsh (Сообщение 1205356)
я так и не привык визуально к этой записи и делаю по старинке
Код AS3:

var v:Vector.<String> = Vector.<String>(["test", "test1"]);


Я тоже обычно так и записываю, но мой изначальный вопрос был в том, как сразу запихать создаваемый вектор в Dictionary, минуя его запись в переменную. В этом суть.

Цитата:

Сообщение от Wolsh (Сообщение 1205364)
Мне удобно так — больше однообразия, да и массив реально мог быть создан ранее и в другом месте.

Можно подробнее про "создан в другом месте"? Не понял.

Wolsh 25.05.2018 11:39

Цитата:

В этом суть.
Абсолютно непонятно, в чем. Нет вообще никакой особенности, никакого отличия и никакого нюанса из-за того, что это Вектор.
Точно так же, как при добавлении чего-то в массив тебе не нужно создавать никаких переменных.
Код AS3:

_arr[5] = new Sprite();

Цитата:

Не понял.
Код AS3:

var arr:Array = ["test", "test1"];
var v:Vector.<String> = Vector.<String>(arr);



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

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