Lua 为什么可以将uu索引设置为表
索引元方法可以设置为等于表。据我所知Lua 为什么可以将uu索引设置为表,lua,metatable,meta-method,Lua,Metatable,Meta Method,索引元方法可以设置为等于表。据我所知 foo.__index = function(self, k) return bar[k] end 及 都是一样的。为什么在这种情况下允许以这种方式声明函数?这不是函数声明-将表分配给\u index只是使用您描述的函数的快捷方式 From(对于Lua5.0,但语言的这一部分没有改变): 使用_索引元方法进行继承非常普遍,以至于 Lua提供了一个快捷方式。尽管名称不同,_索引元方法也有相同的功能 不需要是函数:它可以是表。当它是一个 函数,Lua调
foo.__index = function(self, k)
return bar[k]
end
及
都是一样的。为什么在这种情况下允许以这种方式声明函数?这不是函数声明-将表分配给
\u index
只是使用您描述的函数的快捷方式
From(对于Lua5.0,但语言的这一部分没有改变):
使用_索引元方法进行继承非常普遍,以至于
Lua提供了一个快捷方式。尽管名称不同,_索引元方法也有相同的功能
不需要是函数:它可以是表。当它是一个
函数,Lua调用它,表和缺席键作为它的
论据。当它是一个表时,Lua将重做对该表的访问
它不像你神奇地分配的表格变成了一个函数<代码>类型(foo.\uu index)仍将返回
表
,并且您仍然可以使用它执行与其他表相同的操作,例如使用对
和下一步
,等等。看看Lua字符串库,了解当您可以访问foo
表时,索引函数不允许bar
字段列表的示例。这是真的,是的-我想这意味着该功能在技术上不是语法糖。我将稍微调整一下我的答案。:)
foo.__index = bar