首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扩展lua-resty-*模块并调用父函数

扩展lua-resty-*模块并调用父函数
EN

Stack Overflow用户
提问于 2015-07-29 15:36:58
回答 1查看 116关注 0票数 1

我正在尝试为每个lua-resty-redislua-resty-memcachedlua-resty-mysql模块编写一个扩展默认模块的小类。在我的子类中,我想从父类调用一个函数,但无论我读过什么Lua的继承文档,都找不到合适的方法。

例如,我想重写connect()函数,做一些事情,并在某个时刻调用父函数的connect()函数。但是怎么做呢?

代码语言:javascript
复制
local redis = require "resty.redis"


function redis.connect(self, ...)


  -- Do some stuff here


  local ok, err = parent:connect(...)


  -- Do some other stuff here


  return ok, err
end

如何才能做到这一点?

注意,上面提到的所有模块都是这样构造的:

代码语言:javascript
复制
local _M = { _VERSION = "0.1" }

local mt = { __index = _M }

function _M.new(self)
    return setmetatable({ foo = "bar" }, mt)
end

function _M.connect(self, ...)
    -- Connect
end

return _M

提前谢谢你!

EN

回答 1

Stack Overflow用户

发布于 2015-07-31 22:23:13

代码语言:javascript
复制
local redis = require "resty.redis"
local original_connect = redis.connect

function redis.connect(self, ...)


  -- Do some stuff here


  local ok, err = original_connect(self, ...)


  -- Do some other stuff here


  return ok, err
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31694099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档