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

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

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

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
По умолчанию Как создать сеттер массива?

Здравствуйте. Сабж. Возможно ли такое. Если да, то как? Возьмем, например, двухмерный массив:
Код AS3:
var _myArray:Array = new Array();
arr[2][2].foo = 20;
private function set arr():void{
 
}
Подскажите пожалуйста, что нужно писать в сеттере arr?
__________________
Я мало чего умею, но зато хорошо умею учиться...


Последний раз редактировалось HardCoder; 20.12.2011 в 17:33.
Старый 20.12.2011, 17:30
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 2  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Во-первых, сеттер должен быть публичным, во-вторых - получать какое-то значение

Код AS3:
public function set arr(value:Array):void{
  _myArray = value;
}

Старый 20.12.2011, 17:37
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 3  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Цитата:
Сообщение от illuzor Посмотреть сообщение
Во-первых, сеттер должен быть публичным
С каких это пор?
Цитата:
Сообщение от illuzor Посмотреть сообщение
во-вторых - получать какое-то значение
Это я знаю. Я не знаю как эти значения передать в сеттер (именно массива).
Не пойму, какое отношение ваш код имеет к моему вопросу.
Код AS3:
var _myArray:Array = new Array();
arr[2][2].foo = 20;
private function set arr():void{
 //Здесь нужно чтобы _myArray[2][2].foo стало 20
}
__________________
Я мало чего умею, но зато хорошо умею учиться...


Последний раз редактировалось HardCoder; 20.12.2011 в 17:39.
Старый 20.12.2011, 17:39
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 4  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Вам не сеттер нужен, а геттер. Хотя я вообще не понимаю, чего вы хотите.
Код AS3:
var _myArray:Array = [[],[],[]];
private function get arr():Array
{
    return _myArray;
}
arr[2][2].foo = 20;
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 20.12.2011, 17:40
DaFive вне форума Посмотреть профиль Отправить личное сообщение для DaFive Посетить домашнюю страницу DaFive Найти все сообщения от DaFive
  № 5  
Ответить с цитированием
DaFive
 
Аватар для DaFive

Регистрация: May 2008
Адрес: {0,0}
Сообщений: 754
Записей в блоге: 1
Отправить сообщение для DaFive с помощью ICQ
Что за такой сеттер массива и что он должен делать? Ну нипаняяятна же.
__________________
Кодинг, багинг, алгоритминг. me @

Старый 20.12.2011, 17:41
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 6  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Цитата:
private function set arr():void{

}
Вам же сказали, что здесь ошибка.
Цитата:
не пойму, какое отношение ваш код имеет к моему вопросу.
Естесственно, в эту тему два телепата из другой еще не зашли. Упс, опоздал))
Цитата:
var _myArray:Array = new Array();
arr[2][2].foo = 20;
И это тоже работать не будет.
__________________
http://www.chessmax.ru

Старый 20.12.2011, 17:41
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 7  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Для такого обращения вам нужен не сеттер, а геттер.

Код AS3:
private function get arr():Array{
  return _myArray;
}

Опоздал.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.

Старый 20.12.2011, 17:55
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 8  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Цитата:
Сообщение от Inet_PC Посмотреть сообщение
Цитата:
private function set arr():void{

}
Вам же сказали, что здесь ошибка.
Это не ошибка. Я нарочно упустил аргументы, потому что понятия не имею как их передать.
Представьте себе Класс на 1000 строк. В нем есть 2 массива _myArray1 и _myArray2. Структура массивов идентична (отличатся лишь типами содержащихся обьектов). При изменении елементов одного массива _myArray1 нужно изменить элементы с таким же индексом _myArray2. Тоесть массивы должны быть, как-бы, связаны друг с другом. Что же получается: 250 раз изменять один массив, и 250 раз изменять второй? Не проще ли создать функцию, которая при изменении одного будет изменять второй автоматически.

Добавлено через 5 минут
Хотя, да. Здесь никакой сеттер не пойдет, нужно писать функцию. Закрывайте
__________________
Я мало чего умею, но зато хорошо умею учиться...

Старый 20.12.2011, 18:12
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 9  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Код AS3:
private function setArrayValue(index: int, value:Object):void
{
_myArray1[index] = value;
_myArray2[index] = //делаем, что-то с этим элементом
}
Типа этого?
Я так понял Вы сначала, что-то долго делаете с первым массивом,
а потом хотите, чтобы подобные изменения отразились во втором, так? Тогда еще можно, как помечать в первом те элементы которые изменились и потом пробегаться по всем элементам и менять что-то во втором, но это будет менее производительно, чем функция выше.
__________________
http://www.chessmax.ru


Последний раз редактировалось Inet_PC; 20.12.2011 в 18:16.
Старый 20.12.2011, 18:24
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 10  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Цитата:
Сообщение от Inet_PC Посмотреть сообщение
Я так понял Вы сначала, что-то долго делаете с первым массивом,
а потом хотите, чтобы подобные изменения отразились во втором, так?
Ну, наконец - то .
Цитата:
Сообщение от Inet_PC Посмотреть сообщение
Тогда еще можно, как помечать в первом те элементы которые изменились и потом пробегаться по всем элементам и менять что-то во втором, но это будет менее производительно, чем функция выше.
Да, согласен...
__________________
Я мало чего умею, но зато хорошо умею учиться...

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:14.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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