Возвращаясь к теме глобалок - хотелось сделать нечто вроде:
if Lua_version < 5.5 then
require 'strict'
else
load('global none')()
x = 10 -- x не запрещена
end
y = 20 -- а здесь и подавно
Всё из-за скоупов. В принципе, это странный дизайн - глобальные переменные должны быть глобальными, в этом их назначение, а то мы фактически получили ещё один вид локалок. И смысл?
Ветка Возвращаясь к теме глобалок - хотелось сделать нечто вроде:
5 сообщений · –U Опять-таки, это не замена поведения глобалок, это чисто компайл-тайм проверки для сохранения времени и нервов в случае опечаток и прочего) Потому, что в луа, по умолчанию, если переменная не определена как локалка - значит юзаем глобалки. Здесь же, если ты явно прописал какие глобалки ты хочешь чтобы были глобалками и только они - будет ошибка во время загрузки исходника, а не исполнения.U Такое можно сделать маленьким костыликом, написав условный if Lua_version >= 5.5 then function my_load(str) return load("global print, assert, table, string, etc; " ... str) end else my_load = load end :) и повторить на все функции загрузки кода подобное... Можно ещё <const> вдобавок навесить вроде)