Lua call元方法

Lua__call 元方法在 Lua 调用一个值时调用。

案例

Lua __call 元方法的使用

#!/usr/bin/lua print("haicoder(www.haicoder.net)\n") function table_maxn(t) local mn = 0 for k, v in pairs(t) do if mn < k then mn = k end end return mn end -- 定义元方法__call mytable = setmetatable({10}, { __call = function(mytable, newtable) sum = 0 for i = 1, table_maxn(mytable) do sum = sum + mytable[i] end for i = 1, table_maxn(newtable) do sum = sum + newtable[i] end return sum end }) newtable = {10,20,30} print(mytable(newtable))

程序运行后,控制台输出如下:

06_Lua call元方法.png

我们自定义了 __call 元方法。

Lua call元方法总结

在 Lua 中 __call 元方法在 Lua 调用一个值时调用。