如何使用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'}