Lua table元素设置为整数后变为nil

Lua table元素设置为整数后变为nil,lua,love2d,Lua,Love2d,我正在尝试创建一个基本的实体组件系统,但我的lua脚本(使用Love2D)出现了这个错误。 我不知道问题出在哪里: 错误:systems.lua:11:错误的参数#2到“矩形”(应为数字,得到零) 梅因·卢阿 系统公司 卢阿 组件。lua 调用components.setX(1,20)时,我将错误跟踪到entities.lua,因为在这之后,即使函数将其设置为20,打印键的值也为nil。您不能将数字用作表的键。您可以做两件事(选择一件): 在set和get函数中,将键放在括号内: 函数C.g

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

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

梅因·卢阿

系统公司

卢阿

组件。lua


调用components.setX(1,20)时,我将错误跟踪到entities.lua,因为在这之后,即使函数将其设置为20,打印键的值也为nil。

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

  • 在set和get函数中,将键放在括号内:
函数C.getX(索引)
返回x[索引]
终止
函数C.setX(键、值)
x[键]=值
终止
--y也一样
  • 或者在使用函数时指定引号之间的键
components.getX(“1”)
组件。setX(“1”,20)

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

  • 在set和get函数中,将键放在括号内:
函数C.getX(索引)
返回x[索引]
终止
函数C.setX(键、值)
x[键]=值
终止
--y也一样
  • 或者在使用函数时指定引号之间的键
components.getX(“1”)
组件。setX(“1”,20)
中的

键是字符串值
“键”

如果希望键是变量
key
的值,请执行以下操作

x[key] = value

键是字符串值
“键”

如果希望键是变量
key
的值,请执行以下操作

x[key] = value

实际上,除了
nil
或NaN:boolean、number、string、function、table、userdata之外,您可以使用任何值作为键。@Cyclamilist我所说的“您不能使用数字”的意思是您不能打印(table.2),对于boolean,您也不能打印(table.true)。你必须在引号和括号之间使用它们,但它们不再是数字或布尔,而是字符串。好的,我明白了。它的措辞令人困惑。实际上,除了
nil
或NaN:boolean、number、string、function、table、userdata之外,您可以使用任何值作为键。@cyclamilist我所说的“您不能使用数字”的意思是您不能打印(table.2),与布尔值一样,您不能打印(table.true)。你必须在引号和括号之间使用它们,但它们不再是数字或布尔,而是字符串。好的,我明白了。它的措辞令人困惑。
local components = require "components"

local E = {}

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

return E
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
x.key = value
x[key] = value