如何将lua关键字用作表键?
2021-4-1 17:31:47
收藏:0
阅读:162
评论:3
问题
当我将do作为表的键时,它会给出以下错误:
> table.newKey = { do = 'test' }
stdin:1: unexpected symbol near 'do'
>
我需要将do用作键。我该怎么办?
点赞
用户7396148
sometable.somekey是sometable['somekey']的语法糖,
同样,{ somekey = somevalue }是{ ['somekey'] = somevalue }的语法糖。
像这样的信息可以在这个非常好的资源中找到:
对于这样的需求,有另一种更一般的格式。在这个格式中,我们在方括号之间明确地写出要初始化为表达式的索引:
opnames = {["+"] = "add", ["-"] = "sub", ["*"] = "mul", ["/"] = "div"}
2021-04-01 17:49:58
用户2858170
我需要使用 do 作为关键字。我该怎么办?
阅读 Lua 5.4 参考手册,并了解类似 t = { a = b } 或 t.a = b 只有在 a 是一个有效的 Lua 标识符的情况下才有效。
构造器的一般语法为
tableconstructor ::= ‘{’ [fieldlist] ‘}’ fieldlist ::= field {fieldsep field} [fieldsep] field ::= ‘[’ exp ‘]’ ‘=’ exp | Name ‘=’ exp | exp fieldsep ::= ‘,’ | ‘;’形如
name = exp的 field 等价于["name"] = exp。
那么为什么 do 不起作用呢?
Lua 中的名称(也称为标识符)可以是任何由拉丁字母、阿拉伯数字和下划线组成的字符串,不能以数字开头,也不能是保留字。标识符用于命名变量、表字段和标签。
以下关键字是保留的,不能用作名称:
and break do else elseif end false for function goto if in local nil not or repeat return
do 不是一个名称,因此您需要使用 field ::= ‘[’ exp ‘]’ ‘=’ exp 语法,即在您的例子中是 table.newKey = { ['do'] = 'test' }。
2021-04-03 12:59:24
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在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 代码?

使用以下语法:
t = { ['do'] = 'test' }或者使用
t['do']来获取或设置一个值。