为什么可以将__指数设置为等于表



可以将索引metAmethod设置为等于表。从我能告诉的

foo.__index = function(self, k)
    return bar[k]
end

foo.__index = bar

是一样的。为什么在这种情况下允许声明功能?

这不是函数声明 - 将表格分配给__index只是使用您描述的函数的快捷方式。

来自LUA中的编程(对于LUA 5.0,但该语言的这一部分没有更改(:

使用__指数metAmethod来继承是如此普遍,以至于 Lua提供了捷径。尽管有名字,但__指数metAmethod确实 不需要是一个函数:它可以是表。当它是一个 功能,卢阿将其称为表格,而缺失键则是 争论。当它是一个表格时,lua重做该表中的访问。

这不像您神奇地分配的表变为一个函数。type(foo.__index)仍将返回table,您仍然可以使用其他表来做一些事情,例如使用pairsnext等。

最新更新