如何使用lua关键字作为表键? 问题

如何使用lua关键字作为表键? 问题,lua,lua-table,luajit,Lua,Lua Table,Luajit,当我使用do时,一个lua关键字作为表的键,它会给出以下错误 > table.newKey = { do = 'test' } stdin:1: unexpected symbol near 'do' > 我需要使用do作为键。我该怎么办?使用以下语法: t = { ['do'] = 'test' } 或t['do']获取或设置值。sometable.sometkey是sometable['sometkey']的语法糖 类似地,{somekey=somevalue}是{['so

当我使用
do
时,一个lua关键字作为表的键,它会给出以下错误

> table.newKey = { do = 'test' }
stdin:1: unexpected symbol near 'do'
>

我需要使用
do
作为键。我该怎么办?

使用以下语法:

t = { ['do'] = 'test' }

t['do']
获取或设置值。

sometable.sometkey
sometable['sometkey']
的语法糖

类似地,
{somekey=somevalue}
{['somekey']=somevalue}


类似的信息可以在这个非常好的资源中找到:

对于这些需求,还有另一种更一般的格式。在此格式中,我们显式地将要初始化为表达式的索引写入方括号中:

opnames = {["+"] = "add", ["-"] = "sub",
           ["*"] = "mul", ["/"] = "div"}
--

我需要用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
的字段相当于
[“name”]=exp

那么为什么这不适用于
do

Lua中的名称(也称为标识符)可以是拉丁语的任意字符串 字母、阿拉伯-印度数字和下划线,不以字母开头 数字,而不是保留字。标识符用于命名 变量、表字段和标签

以下关键字为保留关键字,不能用作名称:

 and       break     do        else      elseif    end
 false     for       function  goto      if        in
 local     nil       not       or        repeat    return
do
不是名称,因此需要使用语法
字段::='['exp']''='exp

在您的示例中是
table.newKey={['do']='test'}