如何理解表格中的字段?

> 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?

点赞
用户2858170
用户2858170

因为 x"x" 是两个不同的东西。

x 是一个 nil 值,而 "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 参考手册 2.1 值和类型

表类型实现了关联数组,也就是说,它们的索引可以是除了 nil 和 NaN 之外的任何 Lua 值(NaN 是一个特殊值,用于表示未定义或不可表示的数字结果,例如 0/0)。表可以是异构的;也就是说,它们可以包含所有类型的值(除了 nil)。**任何键的值如果是 nil,则不认为它属于表。反之,任何不属于表的键都有一个关联的值为 nil**。

2019-11-08 11:07:28