> w={x=0, y=0, label = "console"}
> print(w[x])
nil
> print(w.x)
0
> print(w["x"])
0
>
嗨,我想知道为什么print(w [“ x”])给出0,而print(w [x]]给出nil?
答案 0 :(得分:2)
因为x和“ x”是两个不同的东西。
x
是一个零值,而"x"
是一个字符串。
print(w[x])
等同于代码中的print(w[nil])
。
w={x=0, y=0, label = "console"}
是用于的合成糖
w={["x"]=0, ["y"]=0, ["label"] = "console"}
因此{x=0}
实际上将0
存储在密钥"x"
下。
来自Lua Reference Manual 2.1 Values and Types:
类型表实现关联数组,即,可以 不仅具有数字,而且具有除nil以外的任何Lua值作为索引,并且 NaN。 (非数字是用于表示未定义或 无法表示的数值结果,例如0/0。) 异质;也就是说,它们可以包含所有类型的值( 零)。 任何值为零的键均不视为表的一部分。 相反,任何不属于表的键都具有关联的 无价值。