gpt4 book ai didi

android - 从 Lua 中的构造函数访问函数

转载 作者:搜寻专家 更新时间:2023-11-01 08:04:22 25 4
gpt4 key购买 nike

我有一个 Lua 类。在这个构造函数中,我声明了变量(在一个空表中),然后我想访问对象的函数以将对象插入到这个表中。我的代码是这样的:

local BoxClass = require("Box")
local SurpriseBox = {}
local SurpriseBox_mt = { __index = SurpriseBox } -- metatable

function SurpriseBox.new() -- constructor
local object = {
boxes = {}
}
SurpriseBox:CreateBoxes()
print('constructor -> ' .. #object.boxes) --> 0
return setmetatable( object, SurpriseBox_mt )
end

-------------------------------------------------

function SurpriseBox:CreateBoxes()
local box1 = BoxClass.new('palo', 'images/chestClose.gif', 'OPEN')
local box2 = BoxClass.new('moneda', 'images/chestClose.gif', 'OPEN')

self.boxes = { box1, box2}
end

在访问函数 CreateBoxes() 之后,表中没有任何内容。

感谢您的帮助!

最佳答案

当您调用 SurpriseBox:CreateBoxes() 时,self 参数仍然指向 SurpriseBox 表,而不是 object 你创建的表。你应该这样做:

function SurpriseBox.new()  -- constructor
local object = setmetatable( {boxes = {}}, SurpriseBox_mt )
object:CreateBoxes()
print('constructor -> ' .. #object.boxes)
end

关键是在调用 CreateBoxes() 之前分配元表并在 object 上调用它,而不是 SurpriseBox

关于android - 从 Lua 中的构造函数访问函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16518206/

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