这是我刚刚在SCIte中写的一些Lua代码,我不知道它到底有什么问题,所以有人可以向我解释我做错了什么以及如何修复它?
t = setmetatable({},{
__newindex = function(t, key)
if key == false then
return( "False cannot exist in table")
key = nil
end
if key == __string then
table.concat[table, key]
else
table[key] = nil
end
if key == nil then
return "Tables in this file cannot contain false values."
end
}
)
function Error()
_,cError = pcall(__index)
end
function Call1()
error("error in metatable function, '__index'", 1)
end
function Call2()
Call1()
end
Error()
Call2()
答案 0 :(得分:0)
它有很多问题,很多都几乎不可能修改。但是这些修复可能会对您有所帮助,我已尝试根据您之前的操作修复您的功能。我建议您在尝试使用元表创建类之前了解有关该语言的更多信息。
t = setmetatable({},{
__newindex = function(t, key)
if key == false then
return( "False cannot exist in table") -- return values in this function don't make sense
--key = nil THIS WILL NEVER BE REACHER
end
if type(key) == "string" then --check key is a string
table[key] = {}
else
table[key] = nil
end
if key == nil then
return "Tables in this file cannot contain false values."
end
end
}
)
另外
function Call1()
error("error in metatable function, '__index'", 1)
end
没有意义,它总会输出错误,即:
error("No error here")
将产生
lua: ex.lua:26: No error here