История изменений
Исправление AKonia, (текущая версия) :
Единственное что смущает лично меня, так, что то, что как постоянные, так и закрываемые переменные должны через аттрибуты объявлятся в таком виде:
do
local v <const> = "Hello World"
end
-- close это по сути завершатель, что выполняется после выхода из облсти видимости,
-- как по мне это почти деструктор, с той разницей, что деструктор это всё-таки close + gc,
-- но теперь в ООП появляется по сути нормальный деструктор в котором можно чистить пользовательские объекты
-- из Си-интерфейса
local v <close> = setmetatable({}, {__close = function() print("Двери закрываются") end})
end
-- ИМХО лучше было сделать:
const v = ...
close v = ...
Исправление AKonia, :
Единственное что смущает лично меня, так, что то, что как постоянные, так и закрываемые переменные должны через аттрибуты объявлятся в таком виде:
do
local v <const> = "Hello World"
end
-- close это по сути завершатель, что выполняется после выхода из облсти видимости,
-- как по мне это почти деструктор, с той разницей, что деструктор это всё-таки close + gc,
-- но теперь в ООП появляется по сути нормальный деструктор в котором можно чистить пользовательские объекты
-- из Си-интерфейса
local v <close> = setmetatable({}, {__close = function() print("Двери закрываются") end})
end
-- ИМХО лучше было сделать:
const v = ...
close v = ...
Исходная версия AKonia, :
Единственное что смущает лично меня, так, что то, что как постоянные, так и закрываемые переменные должны через аттрибуты объявлятся в таком виде:
do
local v <const> = "Hello World"
end
-- close это по сути завершатель, что выполняется после выхода из облсти видимости,
-- как по мне это почти деструктор, с той разницей, что деструктор это всё-таки close + gc,
-- но теперь в ООП появляется по сути нормальный деструктор в котором можно чистить пользовательские объекты
-- из Си-интерфейса
local v <close> = setmetatable({}, {__close = function() print("Двери закрываются") end})
end