如果在Lua中使用大括号(“ {”和“}”),它们的用途是什么?
最佳答案
表文字。
该表是Lua中的中心类型,可以视为关联数组(哈希表或字典)或普通数组。键可以是nil
以外的任何Lua类型的值,并且表的元素可以包含nil
以外的任何值。
数组成员的访问比在后台进行哈希键访问更有效,但是细节通常并不重要。实际上,这使得处理稀疏数组变得很方便,因为仅需要为那些完全包含值的单元分配存储。
这确实导致了通用的基于1的数组习惯用法,这对C程序员来说有点奇怪。
例如
a = { 1, 2, 3 }
创建一个存储在变量
a
中的数组,其中包含三个元素(巧合)的值与其索引相同。因为元素存储在以1开头的顺序索引中,所以a
的长度(由#a
或table.getn(a)
给出)为3。可以使用非整数键初始化表,如下所示:
b = { one=1, pi=3.14, ["half pi"]=1.57, [function() return 17 end]=42 }
其中
b
将具有名为“ one”,“ pi”,“ half pi”的条目和一个匿名函数。当然,在没有迭代表的情况下查找最后一个元素可能很棘手,除非将该功能的副本存储在其他变量中。花括号出现的另一个地方实际上是相同的语义,但是(对于Lua的新用户而言)隐藏在某些语法糖之后。编写带有单个参数(应该是表)的函数是很常见的。在这种情况下,调用该函数不需要使用括号。这导致看起来似乎包含
()
和{}
的混合代码,显然都被用作函数调用运算符。btn = iup.button{title="ok"}
相当于
btn = iup.button({title="ok"})
但眼睛也较轻。附带地,用文字值调用单参数函数也适用于字符串文字。
关于syntax - Lua中使用花括号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/686931/