Что лучше, надёжнее и быстрее?
Работать с группами юнитов: при их добавлениии, проверки наличия, удалении и т. д.
Может, в каких-то ситуациях лучше работать с группами, а в каких-то - с таблицами?
Или создавать структуры, и работать с ними?
Если кто-то проводил тестирование в разных ситуациях и/или находил подводные камни двух подходов - поделитесь, пожалуйста.
Интересно знать про рабготы с огромными данными, если в проекте огромное количество групп(или таблиц), в каждой может быть много юнитов, проверки на наличие юнитов в списках происходят постоянно, постоянно происходит добавление и удаление юнитов из списков.
А-ля:
units = {}
table.insert( units, unit )

function isUnitInTable(table, unit)
  for k, v in pairs(table) do
    if v == unit then return true end
  end
  return false
end

if isUnitInTable( units, unit ) then
  --это выполнится
else
  --а это не выполнится
end

сортированный список
Сортированный не есть упорядоченный. Перед тем как токсичить без причины стоит хотя бы с терминологией ознакомится.
те более если использовать пейрсы как в вашем примере, это путь к десинкам
pairs - это просто функция, которая возвращает функцию next, переданную таблицу и nil. Если у таблицы есть метаметод __pairs, то вызывается он. Таким образом, добавляется метаметод и никаких десинков нет.
отссылая в гугл
Он отослал не в гугл, а на страницу вики от юзеров луа. Но это всё же такой себе источник. И как я уже сказал, pairs вообще не при делах. Всё дело в функции next. Цитата из официальной документации Lua 5.3:
Allows a program to traverse all fields of a table. Its first argument is a table and its second argument is an index in this table. next returns the next index of the table and its associated value. When called with nil as its second argument, next returns an initial index and its associated value. When called with the last index, or with nil in an empty table, next returns nil. If the second argument is absent, then it is interpreted as nil. In particular, you can use next(t) to check whether a table is empty.
The order in which the indices are enumerated is not specified, even for numeric indices. (To traverse a table in numerical order, use a numerical for.)
The behavior of next is undefined if, during the traversal, you assign any value to a non-existent field in the table. You may however modify existing fields. In particular, you may clear existing fields.
Таким образом, порядок может быть идентичен на разных машинах, а может быть и не идентичен. Поэтому изначальное утверждение Hate правдиво:
что на одном компьютере будет A, B, C а на втором C, B, A

Что касается самого вопроса. Удобство таблиц в том, что их не надо удалять функцией, но нужно реализовать уникальность юнитов. На HIVE есть готовая библиотека, которая включает в себя переписывание нативок для групп юнитов, точек, ректов и групп игроков на таблицы. Краткое описание библиотеки от автора, Bribe:
Most recently, I've revamped the old GUI Fixer Collection to a much more powerful tool: Lua-Infused GUI. Since GUI variables don't actually require strict type assignment when compiled into Lua, I was able to change Locations, Rects, Unit Groups and Player Groups into Lua tables, allowing them to consume an order of magnitude less RAM and be automatically cleaned up by Lua's garbage collector.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
17
Таблицы быстрее. У них также должен быть готовый стандартный функционал, по документации, упрощающий с ними работу.
Работа с таблицами очень простая и гибкая. В плане удобства они мне нравятся намного больше, чем группы. Можно буквально творить чудеса.
Если выяснится, что таблицы ещё и надёжнее, и быстрее, чем группы - то вообще сказка.
26
Таблицы быстрее. У них также должен быть готовый стандартный функционал, по документации, упрощающий с ними работу.
Работа с таблицами очень простая и гибкая. В плане удобства они мне нравятся намного больше, чем группы. Можно буквально творить чудеса.
Если выяснится, что таблицы ещё и надёжнее, и быстрее, чем группы - то вообще сказка.
уже написал, что нет там разницы. луа по дефолту имеет такую скорость, что это бессмысленно.
те более если использовать пейрсы как в вашем примере, это путь к десинкам
17
это путь к десинкам
Что именно здесь вызывает десинки?
26
это путь к десинкам
Что именно здесь вызывает десинки?
ну то, что на одном компьютере будет A, B, C а на втором C, B, A
если делать логику завязаную на пейрсах выйдет мужской половой орган
17
ну то, что на одном компьютере будет A, B, C а на втором C, B, A
почему pairs(table) будет на одном компьютере возвращать A, B, C, а на другом C, B, A ?
С чего это он должен вести себя по-разному в идентичных ситуациях?
26
ну то, что на одном компьютере будет A, B, C а на втором C, B, A
почему pairs(table) будет на одном компьютере возвращать A, B, C, а на другом C, B, A ?
С чего это он должен вести себя по-разному в идентичных ситуациях?
потому что гуглите как работают таблицы в луа
17
потому что гуглите как работают таблицы в луа
Я знаю как работают таблицы в lua (это один из самых популярных скриптовых языков). Pairs даёт не отсортированные ключи, не отсортировано
нестабильно упорядочено.
Может у тебя есть пруфы, что на разных устройствах в идентичной ситуации pairs будет выдавать разные последовательности?
Или, может, ты опираешься на кейсы, согласно которым в рамках варкрафта pairs ведёт себя нестабильно и вызывает синки?
26
потому что гуглите как работают таблицы в луа
Я знаю как работают таблицы в lua (это один из самых популярных скриптовых языков). Pairs даёт не отсортированные ключи, не отсортировано
нестабильно упорядочено.
Может у тебя есть пруфы, что на разных устройствах в идентичной ситуации pairs будет выдавать разные последовательности?
Или, может, ты опираешься на кейсы, согласно которым в рамках варкрафта pairs ведёт себя нестабильно и вызывает синки?
раз ты сам знаешь что это не сортированный список, почему спрашиваешь?
вообще сюр какой то, знаешь что оно упорядочено как попало и удивляешься что может пойти не так)
17
раз ты сам знаешь что это не сортированный список, почему спрашиваешь?
вообще сюр какой то, знаешь что оно упорядочено как попало и удивляешься что может пойти не так)
Ты заявил, что это путь к синку и не дал аргументаций, вот я и спросил - может у тебя есть эти аргументы или экспертиза. Но, видимо, их нет.
Упорядочено как попало - не аргумент к синку.
Аргументом было бы, если бы была инфа что в разных ситуациях при идентичных случаях она сортируется по-разному.
Но ты оба раза оставил за скобками этот важный фактор.
Значит ты, скорее всего, сам этого не знаешь, и почему-то не способен этого принять.
Ну а я тебя спрашивал не с целью завалить, потому что я и сам не знаю подводные камни взаимодействия варика с луа. Я подумал, что ты дашь какую-то инфу по теме, окторую сам же обозначил.
26
раз ты сам знаешь что это не сортированный список, почему спрашиваешь?
вообще сюр какой то, знаешь что оно упорядочено как попало и удивляешься что может пойти не так)
Ты заявил, что это путь к синку и не дал аргументаций, вот я и спросил - может у тебя есть эти аргументы или экспертиза. Но, видимо, их нет.
Упорядочено как попало - не аргумент к синку.
Аргументом было бы, если бы была инфа что в разных ситуациях при идентичных случаях она сортируется по-разному.
Но ты оба раза оставил за скобками этот важный фактор.
Значит ты, скорее всего, сам этого не знаешь, и почему-то не способен этого принять.
Ну а я тебя спрашивал не с целью завалить, потому что я и сам не знаю подводные камни взаимодействия варика с луа. Я подумал, что ты дашь какую-то инфу по теме, окторую сам же обозначил.
я тебе четко сказал что приведет к десинку и почему. чукча не читатель?
причем ты сам в курсе что это не сортированный список. это для тебя не аргумент? или что

нет, ну если ты слушать людей не хочешь, опыт научит)
17
причем ты сам в курсе что это не сортированный список. это для тебя не аргумент? или что
До тебя всё никак не дойдёт, что отсутствие сортировки не означает разную упорядоченность.
На всех устройствах порядок будет одним и тем же, просто не отсортированным.
Для тебя это слишком сложная концепция?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.