gpt4 book ai didi

lua - 为什么可以将 __index 设置为等于表

转载 作者:行者123 更新时间:2023-12-03 03:47:43 25 4
gpt4 key购买 nike

索引元方法可以设置为与表相同。据我所知

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

foo.__index = bar

是一样的。为什么在这种情况下允许以这种方式声明函数?

最佳答案

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

来自Programming in Lua (对于Lua 5.0,但这部分语言没有改变):

The use of the __index metamethod for inheritance is so common that Lua provides a shortcut. Despite the name, the __index metamethod does not need to be a function: It can be a table, instead. When it is a function, Lua calls it with the table and the absent key as its arguments. When it is a table, Lua redoes the access in that table.

这并不像你分配的表神奇地变成了一个函数。 type(foo.__index) 仍会返回 table,并且您仍然可以用它执行其他表可以执行的操作,例如使用 pairs > 和 下一个

关于lua - 为什么可以将 __index 设置为等于表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44320549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com