可以将索引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
,您仍然可以使用其他表来做一些事情,例如使用pairs
和next
等。