gpt4 book ai didi

lua - 在 lua 中编程,对象

转载 作者:行者123 更新时间:2023-12-04 13:35:22 24 4
gpt4 key购买 nike

示例代码:

function Account:new (o)
o = o or {} -- create object if user does not provide one
setmetatable(o, self)
self.__index = self
return o
end

取自:

http://www.lua.org/pil/16.1.html

这样做的目的是什么:
self.__index = self

线?为什么每次创建对象时都会执行它?

最佳答案

正如其他人所说,self (Account 表)用作分配给使用 new 创建的对象的元表.当在“o”中找不到字段时,稍微简化一下(提供的链接中提供更多信息),它会转到“帐户”表,因为 o 的元表说要转到帐户(这就是 __index 所做的)。

但是,不需要每次创建对象时都执行它。你可以很容易地把它贴在某个地方:

Account.__index = Account

它也会起作用。

稍微长一点的故事是,如果一个对象 o有一个元表,而那个元表有 __index字段集,然后在 o 上的字段查找失败将使用 __index查找字段( __index 可以是表或函数)。如 o设置了字段,你不要去它的元表 __index函数来获取信息。不过,我再次鼓励您在上面提供的链接中阅读更多内容。

关于lua - 在 lua 中编程,对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2761713/

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