Size: a a a

2021 September 21

DS

Daniil Smolyakov in pro.lua
Да, это давно практикую. Но тут решил поделиться этим опытом с другими, но засомневался в аргументах.
Значит все правильно написал, да.
Ещё раз спасибо!
источник

DS

Daniil Smolyakov in pro.lua
Поковырял еще.
Всё-таки стоило тут цикл сделать.
Тогда бы мы увидели одни и те же адреса этих функции.
Подсказали почитать статью 6.1 из доки к Lua.
И судя по тому, что там написано, хранится только блок данных для замыкания (локально определенные переменные, например).
А функции все в одном экземпляре.
источник

I

Igor725 in pro.lua
Хм, не знал
источник

AM

Alexey Melnichuck in pro.lua
Вообще это еще от версии зависит
https://www.lua.org/manual/5.2/manual.html#8.1

Equality between function values has changed. Now, a function definition may not create a new value; it may reuse some previous value if there is no observable difference to the new function.

Но как эта observable difference определяется - как-то не очень понятно
источник

AM

Alexey Melnichuck in pro.lua
И вроде ujit такое тоже делает, но я не уверен
источник

АК

Александр Караев... in pro.lua
Если значения не замыкаются, то вполне себе может быть no observable difference
источник
2021 September 22

S

Snusmumriken in pro.lua
Ключевое слово function — всегда создаёт новую функцию. Вообще всегда. Точно так же как {} — создаёт новую таблицу.
источник

DS

Daniil Smolyakov in pro.lua
Да, похоже на то.
В таком случае Lua крутой))
источник

S

Snusmumriken in pro.lua
Только с 5.2
источник

DS

Daniil Smolyakov in pro.lua
Ну если глянуть на указатели таким образом созданных функций, то они не меняются.
Поэтому аналогия между function и {} в этом смысле не работает.
источник

DS

Daniil Smolyakov in pro.lua
Это гуд. Там действительно много классных изменений было.
источник

S

Snusmumriken in pro.lua
Ну, фигня в том, что за счёт версионности, приходится считать что "данный случай является худшим". Всегда так делаю, готовлюсь к худшему )
источник

DS

Daniil Smolyakov in pro.lua
Думаю, тут полезно будет, все же, учитывать специфику проекта.
Если он гуляет по разным платформам, то да.
А если это конкретный движок, который развивается в одном векторе, то уже так перестраховываться смысла меньше.

Сам раньше так делал тоже: типа выработал привычку и норм - пишешь код без кучи детских и непонятных ошибок.
Но несколько проектов спустя обратил внимание, что привычки в таких вещах несколько зашоривают.
И в долгосрочном плане выгоднее пересматривать и вырабатывать новые правила для каждого проекта.
Сохраняет живость ума и побуждает задавать новые вопросы.)
источник

DS

Daniil Smolyakov in pro.lua
Сорян за такую телегу.. Три часа ночи всё же - навевает))
источник

S

Snusmumriken in pro.lua
В моём случае примерно так: есть некоторый жёсткий набор правил (их немного, где-то 3.5 штуки), и есть специфика проектов, которые мержатся с базовым комплектом с заменой.
источник

S

Snusmumriken in pro.lua
Но всё что угодно, что может попасть на широкое обозрение, должно быть вылизано, шоб прям кто угодно мог взять и запустить, проверить, сразу использовать и т.д.
источник

I

Igor725 in pro.lua
Я не углублялся в вопрос, но ты уверен, что эти адреса не являются какими-нибудь локальными регистрами, куда временно пишется адрес фунукции?
источник

S

Snusmumriken in pro.lua
Весь подобный хлам должен создаваться в LUA_REGISTRY, и оттуда же должен вытираться, в случае если ссылок больше не осталось.
источник

I

Igor725 in pro.lua
источник

I

Igor725 in pro.lua
¯\_(ツ)_/¯
источник