AN
Size: a a a
AN
AN
AN
AN
AN
AN
AN
AN
AN
AN
AN
S

S
functon Class:method(foo, bar)
...
end
Напиши сниппет для этого дела, и копипасть. Полная форма очень способствует читаемости.S
setfenv или аналогом. Типа мы переключаем энвайрнмент под текущий класс, и все переменные которые мы объявляем начинают относиться к нему. Но это будет жутко : )local _G = _G
function DEFINE_CLASS(t)
t = setmetatable(t or {}, {__index = _G})
setfenv(t)
end
function ENDEFINE_CLASS()
setfenv(_G)
end
local Class = {}
Class.__index = Class
DEFINE_CLASS(Class)
function new(self, x, y)
local o = setmetatable({}, self)
o.x, o.y = x, y
return o
end
function area(self)
return self.x * self.y
end
ENDEFINE_CLASS()
local obj = Class:new(10, 20)
print(obj:area()) --> 200
Я не тестировал, может я что-то не понимаю, но есть шанс что что-то подобное можно замутить. Правда, между lua5.1 и 5.2 есть различия в том числе в наличии setfenv, но мб получится сделать аналог. И сама затея ужасная, но я хочу попробовать.ШТ
setfenv или аналогом. Типа мы переключаем энвайрнмент под текущий класс, и все переменные которые мы объявляем начинают относиться к нему. Но это будет жутко : )local _G = _G
function DEFINE_CLASS(t)
t = setmetatable(t or {}, {__index = _G})
setfenv(t)
end
function ENDEFINE_CLASS()
setfenv(_G)
end
local Class = {}
Class.__index = Class
DEFINE_CLASS(Class)
function new(self, x, y)
local o = setmetatable({}, self)
o.x, o.y = x, y
return o
end
function area(self)
return self.x * self.y
end
ENDEFINE_CLASS()
local obj = Class:new(10, 20)
print(obj:area()) --> 200
Я не тестировал, может я что-то не понимаю, но есть шанс что что-то подобное можно замутить. Правда, между lua5.1 и 5.2 есть различия в том числе в наличии setfenv, но мб получится сделать аналог. И сама затея ужасная, но я хочу попробовать.IA
I