setmetatable和__call

作者:糖果

网上找来一个很能说明__call用法的例子:

function f(tb, x, y)
    for k,v in pairs(tb) do
        print(k,v)
    end
    return x+y+tb.n
end

b = {}
b.__call = f


a = {}
function a:test()
end
a.n = 100
a.m = 200
setmetatable(a,b)
print(a(1,2))

b作为a的元表的时候,table b={}的表函数,使用__call提定的话, 在执行a(惨数列表), 参数列表和b的f函数的参数列表一致, 被指定函数的第一个参数,是一个table,里面存放的是a的成员变量和函数。

如果这种效果要有C来实现的话,要指向来指向去的指针实现。

糖果

糖果

糖果
LUA教程

风控管理之蜜罐

**目录**{: #toc }* TOC{:toc}# 蜜罐在风控中经常要面临这个问题:哪部分流量来自黑产?可信度高吗?这关系到现有策略效果评估、问题定位、新策略效果评估、模型训练等多个环节。解决这类问题时,蜜罐就起到了一定作用。## 什么是蜜罐?通过一些手段,引诱黑灰产...… Continue reading

Apache APISIX在SAE应用市场发布

Published on December 09, 2019

APISIX后台管理路由创建接口

Published on December 06, 2019