Lua中使用花括号吗?
如果在 Lua 中使用花括号('{'和'}'),它们用于什么?
原文链接 https://stackoverflow.com/questions/686931
表是 Lua 中的核心类型,可以被看作是一个关联数组(哈希表或字典)或普通数组。键可以是 Lua 中的任何类型除了 nil
,表的元素可以保存任何值除了 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"})
但是更加容易读懂。顺便说一下,对于字符串字面量,使用字面量调用单个参数函数也是有效的。
下面是翻译结果,并保持原有的 Markdown 格式:
它们用于表面值,就像您在 C 中使用的一样:
t = {'a', 'b', 'c'}
这是唯一的常见情况。它们不用作块分隔符。在 Lua 表中,您可以放置不同类型的值:
t={"foo", 'b', 3}
您还可以像 Python 一样使用它们作为字典:
t={name="foo", age=32}
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
list/dictionary构造器(即表类型构造器)
如果您说的是代码块,则它们不用于代码块。对于此,Lua只是使用end关键字来结束块。
在这里查看