Мне очень нравится Lua как язык программирования, НО меня невероятно беспокоит необходимость постоянно печатать " local
"для всех моих локальных переменных.
Это просто делает мой код более загроможденным.
Поэтому мне интересно, могу ли я создать доменно-ориентированный язык (DSL) поверх Lua, чтобы просто иметь следующее соглашение об именах переменных.
- Если имя переменной написано ВСЕМИ ЗАГЛАВНЫМИ БУКВАМИ, то это глобальная переменная.
- В противном случае переменная - это
local
переменная.
Вопрос: сработает ли это - да или нет?
Другими словами:
-- In Lua 5.2
isGlobalinLua = "is global in default Lua"
GLOBALVAR = "is global var in default Lua"
local localvar = "is local var in default Lua"
-- In my DSL Lua language
isLocalinDSLLua = "is local in DSL Lua" -- translates to: local isLocalinDSLLua = ...
GLOBALVAR = "is global DSL Lua"
localvar = "is local var in DSL Lua" -- translates to: local localvar = ...
Итак, теперь следующий код в Lua по умолчанию:
myglobal = 10
local a = 1
if a > 1 then
local b = 2
print b
else
local c = 3
print c + myglobal
end
С моим DSL Lua:
MYGLOBAL = 10
a = 1
if a > 1 then
b = 2
print b
else
c = 3
print c + MYGLOBAL
end
ОБНОВЛЕНИЕ:
А как насчет локальных функций?
Как будет работать следующий код?
myfunc = function (...) -- local myfunc = function (...)
Я не уверен, что хотел бы сделать каждую глобальную функцию заглавными буквами.
Может, я просто игнорирую функции и требую идентификатор "local
" ... мысли?