【发布时间】:2019-04-02 16:50:04
【问题描述】:
Lua PIL 和Luajit FFI tutorial 在元表中给出了__index 的两种用法。
一个用于像obj[123]这样的索引,例如,
__index = function (self, k) return self._data+(k-self._lower)
另一种用法是定义命名方法,如教程中所述,
__index = { area = function(a) return a.x*a.x + a.y*a.y end, },
然后我们可以像obj:area()一样进行函数调用。
我可以同时做这两个吗,例如,直接索引和命名方法?
【问题讨论】:
-
是的。您需要检查
type(k)并执行适当的操作(数字键操作或字符串键操作)。 -
是的,这是关键,如果与 Azdle 给出的答案相结合,可能会更有效,即在另一个元表中查找字符串键操作。谢谢你,Egor Skriptunoff。