mva
ну, это проблема твоей архитектуры
Roy
mva
в частности того, что у тебя хештаблица с никами и ники там по id, а не хештаблица с игроками по id И ник - атрибут внутри конкретного объекта "игрок"
mva
при правильной архитектуре такой поиск не является проблемой хоть как-нибудь сказывающейся на производительности
Tony
Tony
Ради чего
Tony
Почему всё по умолчанию глобальное
Tony
И нет констант
fgntfg
Такой язык
mva
mva
нефтяникам для которых писали так было нужно
mva
как и нумерация с 1
mva
https://t.me/ProLua/86006
mva
какие было ТЗ так и сделали
Roy
https://onecompiler.com/lua/3xew8axfk
Roy
Прикольно
Roy
А вот так действительно ссылка
Roy
Хитрожопый луа
Roy
поменял wtf = {} такую инициализацию
Roy
и все
Roy
пропала ссылка
mva
ну, почти
mva
они связаны переинициализацией wtf
Highly Likely
:)
Roy
так погодите-ка
Roy
https://onecompiler.com/lua/3xewaayt5
Roy
а так уже не ссылка
Roy
Я сначала подумал может я до этого переинициализировал
Roy
но щас проверил присвоением, вроде нет
mva
ещё раз
mva
mva
и делаешь её строкой вместо ссылки на таблицу
mva
так работают (все) языки с динамической типизацией
Roy
Ты мне логику сломал
Roy
Я пытаюсь вкурить, но не вкуриваю
Roy
Я же спецом добавил ниже for для вывода ключа и значения
Roy
Прикол в том, что когда я меняю само value, то изменения не влияют на таблицу
Roy
а когда я меняю объекты внутри value, то все норм
mva
s/самое value/значение переменной/
mva
ещё раз: именно так и работают языки с динамической типизацией (да и считай вообще все не-функциональные, наверное)
Highly Likely
wtf = table[key] — здесь wtf хранит в себе ссылку на объект, если table[key] вернула таблицу
wtf = 10 — здесь wtf присвоилось 10, значение по ссылке не изменено
wtf.a = 42 — здесь аттрибут a в объекте по ссылке, которая есть в wtf, присвоилось 42
mva
wtf - это переменная. Самостоятельная.
когда ты делаешь wtf=players она становится указателем на таблицу players. И манипуляции с wtf как таблицей - имеют эффект на players
Highly Likely
Пытался привести пример с указателями на C, но там чот еще сложнее объяснение будет :)
Roy
Понял
mva
как только ты делешь wtf=что-угодно-другое - она становится ДРУГОЙ сущностью
mva
и перестаёт быть ссылкой на players
Roy
Но выглядит как геморрой, потому что это напоминает мне голые указатели в С++ и Си, потому что можно забыть присвоить новые данные таблице
Александр
mva
mva
(т.е. без ООП-операций, просто присваивая переменной новое значение)
Highly Likely
mva
mva
в луне нет такого типа переменных :)
Александр
Вообще, не советую всерьез воспринимать роя, он звезда местных чатиков - помешан на преждевременной оптимизации и (неправильных) бенчмарках
Roy
mva
Roy
Roy
Ну сделайте функцию в луа чтоб явно можно было сказать что это будет ссылкой
Roy
даже если ты ее переинициализируешь
Roy
Ну типа
local wtf = reference(Table[id])
wtf = "govno"
Roy
и все, ты не переинициализируешь, а меняешь value в таблице на которую ссылается wtf, потому что ты заюзал reference
mva
mva
остальных устраивает как есть
Roy
Пускай будет функция, она же не мешает
Roy
Зато кому надо - воспользуются
mva
нет
mva
функцией это не сделаешь
mva
это нужно переписывать весь движок языка
Roy
Ну обертку сделать не вариант?
mva
это будет уже другой диалект
Roy
чтоб reference генерировал объект внутри которого содержится указатель на value таблицы
mva
а так - вариант, Луиз даже инструмент для этого написал