区分在__index中的字段访问和函数调用。

如果我为 foo 的元表设置了 __index 并且调用了以下任一函数:

print(foo.x)

或者

print(foo.x())

是否有一种方法在我的自定义 __index 函数中区分这两个调用。

点赞
用户734069
用户734069

不是的,因为那不是两个不同的操作。它们是相同的操作:获取名为 x 的字段,从表中取出它。它试图在结果上调用一个函数的事实完全无关紧要。毕竟,你可以这样做:

local temp = foo.x
temp()

这应该是完全等效的 Lua 代码。

2013-07-22 04:43:52