将表元素设置为整数后,它变为nil

时间:2019-02-24 00:10:06

标签: lua love2d

我正在尝试制作基本实体组件系统,但我的lua脚本中出现了此错误(使用Love2D)。 我不知道问题出在哪里:

错误:systems.lua:11:“矩形”的错误参数#2(预期数字,为零)

  

main.lua

local system = require "systems"

function love.load()
    system.newPlayer()
end

function love.draw()
    system.drawPlayer()
end
  

systems.lua

local S = {}

local entities = require "entities"
local components = require "components"

function S.newPlayer()
    entities.player()
end

function S.drawPlayer()
    love.graphics.rectangle("fill",components.getX(1),components.getY(1), 10, 10)
end

return S
  

entities.lua

local components = require "components"

local E = {}

function E.player()
    components.setX(1,20)
    components.setY(1,20)
end

return E
  

components.lua

local C = {}

local x = {}
function C.setX(key, value)
    x.key = value
end
function C.getX(index)
    return x.index
end

local y = {}
function C.setY(key, value)
    y.key = value
end
function C.getY(index)
    return y.index
end

return C

我在调用components.setX(1,20)时将错误跟踪到entity.lua,因为在那之后,即使功能将其设置为20,打印键的值仍为nil。

2 个答案:

答案 0 :(得分:4)

x.key = value

键是字符串值"key"

如果希望键为变量key的值,请执行

x[key] = value

答案 1 :(得分:0)

您不能将数字用作表格的键。您可以做两件事(选择一项):

  • 在set和get函数中,将键放在方括号内:
function C.getX(index)
  return x[index]
end

function C.setX(key, value)
  x[key] = value
end

-- same for y
  • 或在使用函数时指定引号之间的键
components.getX("1")
components.setX("1",20)