table 元素在设置为整数后变为 nil
A table element becomes nil, after it is set to an integer
我正在尝试制作一个基本的实体组件系统,但我的 lua 脚本(使用 Love2D)出现了这个错误。
我不知道问题出在哪里:
错误:systems.lua:11:'rectangle' 的错误参数 #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) 时跟踪错误到 entities.lua,因为在那之后,打印键的值为 nil,尽管函数将其设置为 20。
您不能将数字用作表格的键。您可以做两件事(选择一项):
- 在 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)
在
x.key = value
键是字符串值"key"
。
如果你想让键成为变量key
的值,做
x[key] = value
我正在尝试制作一个基本的实体组件系统,但我的 lua 脚本(使用 Love2D)出现了这个错误。 我不知道问题出在哪里:
错误:systems.lua:11:'rectangle' 的错误参数 #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) 时跟踪错误到 entities.lua,因为在那之后,打印键的值为 nil,尽管函数将其设置为 20。
您不能将数字用作表格的键。您可以做两件事(选择一项):
- 在 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)
在
x.key = value
键是字符串值"key"
。
如果你想让键成为变量key
的值,做
x[key] = value