Size: a a a

2021 October 19

RA

R A in pro.lua
Конкретно LuaJIT подвыражения оптимизирует очень хорошо, ванилька не умеет. Но в любом случае достоверный ответ даст только тестирование.
источник

АК

Александр Караев... in pro.lua
wtf = "55" "ребиндит ссылку", а не меняет значение wtf.
источник

VM

Vadim Misbakh-Solovi... in pro.lua
потому что local varname это не ссылка на [global] varname.
источник

RM

Roy Mustang in pro.lua
аа, то есть, пытаясь изменить якобы объект я сам того не зная создаю копию ?
источник

VM

Vadim Misbakh-Solovi... in pro.lua
это просто создание другой переменной с тем же именем, которое "затеняет" видимость глобальной переменной (которая остаётся на месте)
источник

АК

Александр Караев... in pro.lua
да.
гипотетический метод wtf:set("123") менял бы wtf, но строки в луа иммутабельны
источник

RM

Roy Mustang in pro.lua
Так что мне делать?
Я не вижу смысла почему я должен дважды искать в хеш таблице один и тот же объект если я хочу одновременно прочитать его, а потом изменить
источник

RM

Roy Mustang in pro.lua
особенно если объекты тяжелые
источник

VM

Vadim Misbakh-Solovi... in pro.lua
"одновременно прочитать его, а потом изменить"

это как?
источник

АК

Александр Караев... in pro.lua
local obj = table[key]
obj.a = 1 -- ok
obj.b = 2 -- ok
obj = ... -- bad, заменит объект
источник

RM

Roy Mustang in pro.lua
Ну типа сначала прочитать какие то данные, а потом уже изменить саму таблицу
Разные случаи бывают
источник

VM

Vadim Misbakh-Solovi... in pro.lua
без конкретных объяснений это выглядит как проблема XY
источник

VM

Vadim Misbakh-Solovi... in pro.lua
в любом случае - у тебя есть метатаблицы, с их помощью ты можешь модифицировать табличный класс, прикрутив к таблицам батарейки для превращения их в полноценный (насколько это возможно) объект
источник

VM

Vadim Misbakh-Solovi... in pro.lua
соответственно, можешь даже сделать table:copyvalue(index,where_to_put_copy):changevalue(index,what_to_put)
источник

RM

Roy Mustang in pro.lua
function change_name(id, new_name)
  local old_name = PlayersName[id]
  print("User: " .. id .. " change name from: " .. old_name .. " to: " .. new_name)
  PlayersName[id] = new_name;
end
источник

RM

Roy Mustang in pro.lua
Ну вот к примеру
источник

RM

Roy Mustang in pro.lua
Задача аля поменять ник игрока, но при этом вывести инфу с какого ника на какой поменяли (задачу с воздуха взял)
источник

VM

Vadim Misbakh-Solovi... in pro.lua
ну и в чём проблема?
источник

RM

Roy Mustang in pro.lua
Я же дважды поиск по хеш таблице выполняю
источник

VM

Vadim Misbakh-Solovi... in pro.lua
ну, это проблема твоей архитектуры
источник