Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.10.2011, 20:42
Vishapakahr вне форума Посмотреть профиль Отправить личное сообщение для Vishapakahr Найти все сообщения от Vishapakahr
  № 1  
Ответить с цитированием
Vishapakahr

Регистрация: Apr 2009
Адрес: Armenia , Yerevan
Сообщений: 145
По умолчанию Vector как ассоциативный массив

Здравствуйте , питаюсь осуществить следующее

Код AS3:
package
{
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.text.TextField;
 
 
	public class vector_test extends Sprite
	{
 
		private var v:Vector.<String> = new <String>[];
		//private var v:Array = [];
		private var txt:TextField = new TextField();
		public function vector_test()
		{
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP;
 
			txt.autoSize = 'left';
			addChild(txt);
 
			for(var i:int = 0;i<4;i++){
 
				try{
			v['b'+i] = 'bbb';
				}catch(e:Error){
				txt.appendText(e.message+'\n');
				}
			txt.appendText(v['b'+i]+'\n');
 
			}
			txt.y = 150;
		}
	}
}
Печатает Error #1056 , однако при

Код AS3:
private var v:Array = [];
Все нормально работает. В чем проблем с векторам ? как можно его осуществлять ?
__________________
Urartu is a neoHittite and ProtoArmenian kingdom !!

Старый 12.10.2011, 20:51
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 2  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Скажите, а что вот эта строчка делает по вашему?
Код AS3:
v['b'+i] = 'bbb';
Что такое вектор (массив)? Что такое ассоциативный массив? Чем массив отличается от ассоциативного массива?
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 12.10.2011, 20:56
Vishapakahr вне форума Посмотреть профиль Отправить личное сообщение для Vishapakahr Найти все сообщения от Vishapakahr
  № 3  
Ответить с цитированием
Vishapakahr

Регистрация: Apr 2009
Адрес: Armenia , Yerevan
Сообщений: 145
Цитата:
Сообщение от -De- Посмотреть сообщение
Скажите, а что вот эта строчка делает по вашему?
Код AS3:
v['b'+i] = 'bbb';
Что такое вектор (массив)? Что такое ассоциативный массив? Чем массив отличается от ассоциативного массива?
ассоциативный массив это кагда кагда можно вызовать элемент массива с помощью строки , а не ассоциативный кагда только с помощью индексов. Вектор , это тот же массив , толька тут можно задать тип элементов массива. Может неправильно с формулировал задачу ... Мне нужно делать ассоциативный массив где все элементы одного и того же типа. В компиляторе это удобно ибо показывает свойство типа при использовании. Как можно его делать ?
__________________
Urartu is a neoHittite and ProtoArmenian kingdom !!

Старый 12.10.2011, 21:03
BezDelnik вне форума Посмотреть профиль Отправить личное сообщение для BezDelnik Найти все сообщения от BezDelnik
  № 4  
Ответить с цитированием
BezDelnik

Регистрация: Jul 2008
Сообщений: 80
Отправить сообщение для BezDelnik с помощью ICQ
насколько я все это понимаю:

Array - индексированный массив. Индексы - int. Элементы - что угодно
Vector - индексированный массив. Индексы - int. Элементы - данные одного типа
Object - ассоциативный массив. Индексы - String. Элементы - что угодно
Diictionary - ассоциативный массив. Индексы - что угодно. Элементы - что угодно

Старый 12.10.2011, 21:13
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 5  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Надстройку над объектом.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 12.10.2011, 21:14
Vishapakahr вне форума Посмотреть профиль Отправить личное сообщение для Vishapakahr Найти все сообщения от Vishapakahr
  № 6  
Ответить с цитированием
Vishapakahr

Регистрация: Apr 2009
Адрес: Armenia , Yerevan
Сообщений: 145
Цитата:
Сообщение от BezDelnik Посмотреть сообщение
насколько я все это понимаю:

Array - индексированный массив. Индексы - int. Элементы - что угодно
Vector - индексированный массив. Индексы - int. Элементы - данные одного типа
Object - ассоциативный массив. Индексы - String. Элементы - что угодно
Diictionary - ассоциативный массив. Индексы - что угодно. Элементы - что угодно
Спасибо за Dictionary , незнал раньше нащет первого

Код AS3:
var a:Array = [];
			a['something'] = 'element of something';
			txt.appendText(a['something']+'\n');
 
			txt.y = 150;
Это у меня печатает 'element of something' , а как получился что индекс взял как строка ?

Добавлено через 45 секунд
Цитата:
Сообщение от GBee Посмотреть сообщение
Надстройку над объектом.
А как это делать ?
__________________
Urartu is a neoHittite and ProtoArmenian kingdom !!

Старый 12.10.2011, 21:26
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 7  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
А как это делать ?
Код AS3:
package
{
	public class Strings
	{
		private var _dict:Object = {};
		public function getString(key:String):String
		{
			return _dict[key] as String
		}
 
		public function addString(key:String, value:String):void
		{
			_dict[key] = value;
		}
	}
}
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 12.10.2011, 21:28
Vishapakahr вне форума Посмотреть профиль Отправить личное сообщение для Vishapakahr Найти все сообщения от Vishapakahr
  № 8  
Ответить с цитированием
Vishapakahr

Регистрация: Apr 2009
Адрес: Armenia , Yerevan
Сообщений: 145
А точно ! спасибо
__________________
Urartu is a neoHittite and ProtoArmenian kingdom !!

Старый 12.10.2011, 21:40
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 9  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Цитата:
Сообщение от Vishapakahr Посмотреть сообщение
ассоциативный массив это кагда кагда можно вызовать элемент массива с помощью строки , а не ассоциативный кагда только с помощью индексов.
Нет. Даже если попытаться как-то понять "вызовать элемент массива с помощью строки".
Лучше бы почитали про работу с массивами и что они такое. Может вызывать элементы перестали бы. И поняли чётко, что такое индекс.

Ассоциативный массив, где все элементы одного и того же типа (и это условие проверяется компилятором) на as3 сделать нельзя. Но GBee хороший вариант предложил.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 13.10.2011, 00:33
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 10  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Дело в том, что Array не "честный" массив, а Vector честный.
Array может выступать и в качесте хэшмапы, где ключом может быть и строка а не только uint.
Вместо
Код AS3:
v['b'+i] = 'bbb';
делайте
Код AS3:
v[i] = 'bbb';
или
Код AS3:
v.push('bbb');
И вы не совсем понимаете разницу между Dictionary и Object.
Использовать в качестве ключа в словаре строку - нонсенс.
Словарь нужен для использования в качестве ключа ссылочных объетов.
Для строк и неупорядоченных чисел - Object
Для упорядоченных наборов индексов - Array.
Я вообще предпочитаю установку значеий массива только через push - это позволяет избежать глупых ошибок с пропущенными индексами и превращения массива в объект (хэш)
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 13.10.2011 в 00:41.
Создать новую тему Ответ Часовой пояс GMT +4, время: 07:09.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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