return{
initime = 1;
isneed= true; -- need to modify
testfn=function()
isneed = false; ---how to modify the "isneed" value?
end
}
我想修改必要的值,我已经尝试过这样
local testdata;
testdata={
initime = 1;
isneed= true;
testfn=function()
testdata.isneed = false;
end
}
return testdata;
但是我不想要的代码,我认为还有另一种设置值的方法。
基于@luther的注释,第二个示例中的代码应该可以使用。
local testdata = {
initime = 1,
isneed = true,
testfn = function()
testdata.isneed = false
return
end
}
print(testdata.isneed)
testdata.testfn()
print(test.data.isneed)
这应该输出以下内容:
true
false
或者,如果您想稍微想一点点,可以使用元表重载表testdata
的调用运算符:
local testdata = {
initime = 1,
isneed = true,
testfn = function()
testdata.isneed = false
return
end
}
testdata = setmetatable(testdata, {
__call = function(self)
return self.testfn()
end
})
print(testdata.isneed)
testdata()
print(testdata.isneed)
此示例的输出等同于上述输出。根据您希望用代码完成什么,将调用操作符重载为元表可以为您提供更大的灵活性。使用这种方法,您可以像在self
函数中使用__call
参数那样稍微更改代码:
local testdata = setmetatable({initime = 1, isneed = true}, {
__call = function(self)
self.isneed = false
return
end
})
print(testdata.isneed)
testdata()
print(testdata.isneed)
这将产生与第一个示例相同的输出。