【问题标题】:Addressing an index in array in Lua在 Lua 中寻址数组中的索引
【发布时间】:2014-02-09 00:55:08
【问题描述】:

我正在尝试使用 Love 2d 引擎编写一个简单的游戏。它使用 lua 作为脚本语言。我对数组有一些问题,找不到任何解决方案。这是我的问题:

for i = 1, 10 do 
    objects.asteroids = {} 
    objects.asteroids[i] = {} 
    objects.asteroids[i].body = love.physics.newBody(world, 650/2, 650/2, "dynamic")
    objects.asteroids[i].size = 3 
    objects.asteroids[i].angle = math.random(6) 
end 

在同一个函数中,我正在尝试执行以下操作:

for i = 1, 10 do 
    objects.asteroids[i].size = 2 
end 

我在尝试运行我的游戏时收到此错误:

错误 main.lua:48: 尝试索引一个 nil 值

其中第 48 行指的是这行代码:

objects.asteroids[i].size = 2 

【问题讨论】:

    标签: arrays lua love2d addressing


    【解决方案1】:

    您将在每次循环迭代中覆盖 objects.asteroids

    for i = 1, 10 do
      objects.asteroids = {} -- <== Here.
      objects.asteroids[i] = {}
    

    这意味着您尝试添加的小行星对象最终会在循环的下一步中被删除,因为 object.asteroids 设置为新的 {} 表,之后旧表将无法访问.

    你可能想像这样重新排列它:

    objects.asteroids = {}
    
    for i = 1, 10 do
      objects.asteroids[i] = {}
      -- ...
    

    【讨论】:

    • 谢谢,现在看起来很琐碎:)。
    猜你喜欢
    • 2013-11-25
    • 1970-01-01
    • 2012-05-21
    • 2017-03-13
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    相关资源
    最近更新 更多