-3

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

1 回答 1

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
于 2013-05-16T03:30:26.637 回答