尝试访问表内的值

我正在尝试这样做

local ball = {
        width = 20,
        height = 20,

        position = {
            x = (game.width / 2) - (width / 2), -- 将球放在屏幕中心
            y = (game.height / 2) - (height / 2)
        },

        velocity = 200,  -- 移动速度
        color = { 255, 255, 255 }
    }

但是 Love2D 告诉我 attempt to perform arithmetic on global 'width' (a nil value)。我该如何修复呢?

我已经尝试用 ball.width / 2 替换 width / 2,但是我得到了 attempt to index global 'ball' (a nil value)

点赞
用户734069
用户734069

请记住,local some_name = expression 等价于:

local some_name
some_name = expression

这使得 some_name 可以出现在 expression 中。特别是,它允许使用局部函数进行递归。然而,在实际评估expression之前,some_name 的值仍然是 nil

因此在您的表初始化中,ball 是一个 nil 值。在初始化表时,无法访问表的成员。 但您可以在初始化后进行访问:

local ball = {
    width = 20,
    height = 20,

    velocity = 200,
    color = { 255, 255, 255 }
}

ball.position = {
    x = (game.width / 2) - (ball.width / 2), --将球放在屏幕中心
    y = (game.height / 2) - (ball.height / 2)
}
2016-04-21 19:01:39