Tabel脚本不起作用

时间:2018-04-20 03:28:42

标签: lua

p = {PlayerName= "",
   y = 0,
   new = function ()
    pl = {}
    for i,v in pairs(p)do
      pl[i] = v
     end
    return pl
    end,
    jump = function(y1) 
    p.y1 = p.y + p.y1

end,

  }

     p1 = p.new

  p1.PlayerName = "jo"
   p1.y = 2
    print(p1.PlayerName,p1.y)

它一直给我一个错误,说global p does not exist。任何人都可以帮我解决这个问题

1 个答案:

答案 0 :(得分:0)

  

全局p不存在

它在Lua中的工作方式,像variable = expression..之类的语句在表达式被评估之前不会创建变量。因此,在编译表达式时,如果变量是局部变量,则该变量在表达式的范围内不可见。编译器会假设您引用了一些全局变量,并在运行时最终得到该错误。 值得注意的例外是local function name()语法糖,它首先创建变量,然后分配函数体,允许从函数体内访问变量。

如果要从将分配给该变量的表达式中访问局部变量,则必须首先创建/声明变量。比如说,您可以使用local varname声明它,或者使用部分填充的数据创建它,然后分配将引用该变量的其他字段。

旁注,避免使用全局变量,除非你确实需要全局变量。 pl = {}看起来像创建新实例的数据,而目前它将替换全局变量pl,因此所有对象都将在同一数据实例上运行。