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

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Может, тройной ассоциативный массив? %)
Не, это тоже изврат, но остальное не лучше) Возможно у вас нет варианта красивее тупого перебора, если он не тормозит, то пусть.
Код AS3:
private var dictionaryObj:Dictionary = new Dictionary();
 
public function pushTriplet(obj:Object, str:String, fun:Object, index:int):void {
  if(dictionaryObj[obj] == null) {
    dictionaryObj[obj] = new Object();
    dictionaryObj[obj][str] = new Dictionary();
    dictionaryObj[obj][str][fun] = index;
  }
  else if(dictionaryObj[obj][str] == null) {
    dictionaryObj[obj][str] = new Dictionary();
    dictionaryObj[obj][str][fun] = index;
  }
  else if(dictionaryObj[obj][str][fun] == null) {
    dictionaryObj[obj][str][fun] = index;
  }
  else {//index already exists, overwriting
    dictionaryObj[obj][str][fun] = index;
  }
}
public function getIndexByTriplet(obj:Object, str:String, fun:Object):int{
  if(dictionaryObj[obj] && dictionaryObj[obj][str] && dictionaryObj[obj][str][fun] != null) {
    return dictionaryObj[obj][str][fun];
  }
  else {//no index
    return -1;
  }
}
public function deleteIndexByTriplet(obj:Object, str:String, fun:Object):void {
  if(dictionaryObj[obj] && dictionaryObj[obj][str])
    delete dictionaryObj[obj][str][fun];
//ещё можно добавить проверки на то, что dictionaryObj[obj][str] пуст, чтоб его мочить, но влом
}
//итерирование писать тоже влом, очевидно же =)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.


Последний раз редактировалось -De-; 22.08.2011 в 22:55.