在函数内部创建表会返回错误

时间:2016-01-30 01:42:17

标签: lua love2d

当我插入以下代码(进入LÖVE的引擎)

function createNewBody(id,m)
    if world.attributes.isCreated==true then
        world.body[id]={mass=m,x=0,y=0,xAccel=0,yAccel=0,xR=0,yR=0} --error is in this line.
        world.bodies=world.bodies+1
    else
        print("You must first create a new world!\n")
    end
end

并通过以下方式调用:createNewBody(moon,physics.math.moonG)(是的,我已经定义了moonG)。

这是我的physics.math表:

physics={}
physics.math={
    gUnit="m/s^2",
    earthG=9.80665,
    moonG=1.622,
    marsG=3.711,
    mercG=3.7,
    jupitG=24.79,
    pi=3.14159265359,
    ln=2.718281828459
}

我收到以下错误:'table index is nil' 我不确定我做错了什么。

1 个答案:

答案 0 :(得分:0)

您无法以这种方式创建表格。

首先,您必须通过以下方式创建一个空表:

world.body[id] = {}

然后,您可以使用键值对上传它:

world.body[id].mass = m
world.body[id].x = 0
world.body[id].y = 0
...

也许你可以用与原始代码相同的方式编写它们;我不确定这是否有效,但可能确实如此。

奖励:通过创建“模板表”并使用ipairs搜索,您可以使其变得更加简单,但这超出了此问题的范围。