Учитывая следующий код:
http. lua
local function create_socket()
-- do stuff to create socket
return socket, err
end
local _M
local mt = { __index = _M }
function _M:new()
local sock, err = create_socket()
if not sock then
return nil, err
end
return setmetatable({ sock = sock, keepalive = true }, mt)
end
function _M:function1() end
function _M:function2() end
return _M
http_extender. lua
local http = require "http"
local _M = {}
function _M:new()
local o = setmetatable(self, {__index = http.new()})
return setmetatable({}, {__index = o})
end
function _M:function3() end
function _M:function4() end
return _M
Учитывая, что http_extender
предназначен для расширения функциональности http
, пара вопросов:
- У меня такое ощущение, что с
http_extender:new()
что-то не так по своей сути, потому что оно модифицирует self
для каждого вызова, верно? - Если действительно так, то каков будет правильный способ сделать это так, чтобы каждый вызов to
http_extender:new()
создает новый http
«объект», который состоит из функций и атрибутов http_extender
?
Спасибо