LUA:无法理解 ax 和 a[x] 之间的区别

Zen*_*yro 2 lua

正如 Lua 手册所说,该语言的新手会陷入认为 ax 和 a[x] 相似之处多于不同之处的陷阱。我也是新手之一,哈哈。

\n

为什么 ax 给出 nil,但是 a[x] 给出 10 而 ax 给出 nil?

\n
a ={}\n\nx = "y"\n\na[x] = 10\n\n print(a[x])  --gives 10 for "y"\n\n print(a.x)  --gives nil for "x"\n\n print(a.y)  --give 10 for "y"\n
Run Code Online (Sandbox Code Playgroud)\n

老实说,我觉得我理解上面的代码为什么有效,但我真的想知道\xe2\x80\x94概念上\xe2\x80\x94为什么:

\n
invitems = {}\n\nname = string.lower(name)\n\ninvitems[name] = "weapon"\n\nprint(invitems[name]) ----> gives weapon\n\nprint(invitems.name)  ----> gives nil\n\nprint(invitems.string.lower(name))  ----> gives weapon\n
Run Code Online (Sandbox Code Playgroud)\n

lut*_*her 5

a[x]是更基本的索引结构。a.x是 的语法糖a['x']。所以 中a[x],x是一个变量名。其中a.xx是一个文字字符串,与变量 无关x