Сейчас 23:02:21 Пятница, 22 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Система] Dictionary
SirNikolasДата: Суббота, 17 Декабря 2011, 18:24:58 | Сообщение # 26
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
stack_top - плавающая вершина стека, как можно догадаться по названию. ret_addr - метка кода, с которой необходимо продолжить выполнение при выходе из "рекурсии". arg_stack - стек, в котором находятся узлы дерева.

 

HexingДата: Суббота, 17 Декабря 2011, 19:08:46 | Сообщение # 27
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Quote (SirNikolas)
set d[100500] = CreateUnit(...)//И это тоже разрешено!

как это возможно?
тобишь указывается ключ, а реально номера - порядковые?


 

SirNikolasДата: Суббота, 17 Декабря 2011, 19:16:06 | Сообщение # 28
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Поля сохраняются парами (ключ - значение), так что номера можно указывать любые, главное, чтоб попадали в диапазон int.

 

HexingДата: Понедельник, 26 Декабря 2011, 15:48:27 | Сообщение # 29
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Quote (SirNikolas)
размер всех словарей - 8191. Этот размер не стоит уменьшать - память Вы этим не сэкономите.

=>
что можно
Quote (SirNikolas)
//! runtextmacro DeclareDictionary("integer","unit","false","true","IntegerComparison","8191")

заменить на
Code
//! runtextmacro DeclareDictionary("integer","unit","false","true","IntegerComparison")

а в коде вместо переменной макроса подставить 8191 раз другое число нет смысла ставить


 

SirNikolasДата: Понедельник, 16 Января 2012, 15:56:41 | Сообщение # 30
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (SirNikolas)
Этот размер не стоит уменьшать
Но его можно увеличить.

Добавлено (16 Январь 2012, 15:56:41)
---------------------------------------------
Обновление.
  • Устранен баг с методом .Rebuild(), заключавшийся в удалении некоторых значений при вызове.
  • Убран алгоритм сортировки из метода .Rebuild() по причине ненужности. После разложения дерева на выходе получается уже отсортированный массив.
  • При вызове макроса больше не надо указывать, наследуются ли индекс и значение от handle.
  • Добавлен метод ForEach, выполняющий действия для каждого поля в словаре.
    Вообще говоря, он был разработан для отладки системы и исправления первого бага. :)
  • Убрана небольшая неточность, связанная с неудалением полей при обнулении.


 

DreiiДата: Понедельник, 16 Января 2012, 19:50:30 | Сообщение # 31
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (SirNikolas)
Что-то я в последнее время стал делать из JASS'а C++ :)

Это же хорошо.
А по классу - это просто офигенно!


 

AUДата: Суббота, 28 Января 2012, 20:13:52 | Сообщение # 32
7 уровень
Группа: Проверенные
Сообщений: 471
Награды: 0
Репутация: 70
Блокировки:
извиняюсь, но
ЧТО ЭТО? о_О, а то я не врубаюсь
и как это и где юзать?


Остаться в живых
стрелялка с мышковым управлением =)
 

SirNikolasДата: Понедельник, 30 Января 2012, 18:48:57 | Сообщение # 33
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Основное применение - создание баз данных. Скачай карту-пример.

Добавлено (30 Январь 2012, 18:04:45)
---------------------------------------------

Обновлено до версии 1.2
  • Добавлен статичный метод .Break(), прекращающий цикл .ForEach().
    Обратите внимание, он не прерывает выполнение функции!
Пример:
Code
function abc takes integer i, integer v returns nothing
     if v == MyGlobal then
         call Dictionary_integer_integer.Break()
         set MyBoolean = true
     endif
endfunction

function def takes nothing returns nothing
     set MyBoolean = false
     set MyGlobal = 123
     call MyDict.ForEach(abc)
     if MyBoolean then
         //...
     endif
endfunction

Добавлено (30 Январь 2012, 18:48:57)
---------------------------------------------
Раньше я дважды пытался написать вот этот спелл, используя хэш и обычные структуры. Оба раза все кончалось полным провалом. Реализовав его сегодня за один день (с помощью словарей), понял, какую удобную штуку я создал. :)


 

  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz