你能告诉我这段代码有什么问题吗?

时间:2013-05-16 02:41:19

标签: lua syntax-error scite

这是我刚刚在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()

1 个答案:

答案 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