Size: a a a

2021 July 26

n

nibble in pro.lua
Ну или как еще, я не догадываюсь
общие страницы памяти?
источник

S

Snusmumriken in pro.lua
Если шарить что-то похожее на объекты — всё равно придётся читать-перечитывать. Крутые посоны делают что-то типа общих страниц памяти насколько я знаю, и указатели на объекты, которые интерпретируются прямо как объекты в разных приложениях одновременно безо всяких копирований. Ну и куча всяких мутексов-светофоров чтобы сделать операции атомарными.
источник

L

Leon174 in pro.lua
Пардоньте, твоя правда, проверил сейчас _G. Просто привычка инициализировать по месту вынуждает разделять список переменных, чтобы нечитаемую кашу присвоений не получить, а значит в каждой строке этот гребаный локал. Замылился глаз. Но в паскале, ниме и им подобных это чище выглядит.
источник

S

Snusmumriken in pro.lua
А я не понимаю что тебе так уж сильно мешает. Я предпочитаю всегда определять переменные по месту, чтобы не скакать по файлу туда-сюда, и определять функции по последовательному использованию, чтобы когда вижу использование какой-то функции в другой — мотать ВВЕРХ.
источник

S

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

L

Leon174 in pro.lua
Шума больше с этими локалами, так-то не могу сказать, что по ночам из-за них не сплю. Но подход в fennel мне нравится больше.

One of the most common legitimate criticisms leveled at Lua is that it makes it easy to accidentally use globals, either by forgetting to add a local declaration or by making a typo. Fennel allows you to use globals in the rare case they are necessary but makes it very difficult to use them by accident.

Fennel also removes the ability to reassign normal locals. If you declare a variable that will be reassigned, you must introduce it with var instead. This encourages cleaner code and makes it obvious at a glance when reassignment is going to happen. Note that Lua 5.4 introduced a similar idea with <const> variables, but since Fennel did not have to keep decades of existing code like Lua it was able to make the cleaner choice be the default rather than opt-in.
источник

S

Snusmumriken in pro.lua
Для теста на "забыл влепить local" есть

local function snap()
 local g = {}
 for k, v in pairs(_G) do g[k] = v end
 return g
end

local function check(g)
 for k, v in pairs(_G) do g[k] = nil end
 return g
end

local g = snap()

require'mylib'

require'inspect'( check(g) )
источник

L

Leon174 in pro.lua
Ага, и luacheck еще есть. А можно взять и сделать локал умолчальным, вместо этого камлания с бубнами.
источник

S

Snusmumriken in pro.lua
А можно сделать

setmetatable(_G, {__newindex = function(self, k, v)
 print("set global", k, v, debug.traceback(2))
 rawset(self, k, v)
end})
источник

L

Leon174 in pro.lua
Ай, все с тобой понятно, агент Иерусалимски.
источник

S

Snusmumriken in pro.lua
Да просто я привык, и уже о-о-о-о-очень давно в последний раз забывал написать local )
источник

S

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

S

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

ВГ

Виктор Гриневский 🐧... in pro.lua
Не, как обходть проблему с глобалом по-умолчанию - оно примерно человечество придумало. Но тем не менее как будто это правда ведь некоторое неудобство. По крайней мере несколько контринтуитивно
источник

S

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

S

Snusmumriken in pro.lua
Луачек в целом встраивается в рабочий пайплайн, мол, делаешь шорткат на луачек при запуске программы, или что-то такое, получаешь такой же листинг варнинг-эрроров как при нажатии build> в VS на сишке-шарпее.
источник

ВГ

Виктор Гриневский 🐧... in pro.lua
Есть ещё strict(особенно удобно, когда он начинает в проде стрелять), действительно есть луачек. Всё можно, но с точки зрения дизайна эта часть у луа не нравится, кажется что, не только мне)
источник

S

Snusmumriken in pro.lua
Ящитаю, что не надо превращать луашку во что-то крупно-серьёзное. Оно хорошо на своём месте. А то набегут всякие "а давайте сделаем const protected abstract template штук и ещё типизацию пригоним" — и зачем, спрашивается, вам в таком случае луашка? Берите плюсы-шарп-го-раст ))
В жаваскрипте понятно зачем тайпскрипт, жаваскрипт имеет тотальную монополию в бравузерах, и тайпскрипт даёт некоторое разнообразие.
источник

M

Mike_Went in pro.lua
типизация луашке действительно не помешала бы
источник

L

Leon174 in pro.lua
Не только, не только. Пора создавать подпольную организацию по противодействию агентурной сети PUC Rio, которая вон как далеко раскинула свои щупальца.
источник