Rya*_*ach 0 lua dictionary lua-table
以下示例应该创建一个表,可以在数字和字符串之间转换,然后再返回,但无法运行.
是因为我在字典类型中使用数字键吗?或者是因为lua从1开始表索引?
有没有更好的方法来实现这一目标?
dyeColor = {
0="black" , black = 0,
1="red" , red = 1,
2="green" , green = 2,
3="brown" , brown = 3,
4="blue" , blue = 4,
5="purple" , purple = 5,
6="cyan" , cyan = 6,
7="lightGray", lightGray = 7,
8="gray" , gray = 8,
9="pink" , pink = 9,
10="lime" , lime =10,
11="yellow" , yellow =11,
12="lightBlue", lightBlue =12,
13="magenta" , magenta =13,
14="orange" , orange =14,
15="white" , white =15}
Run Code Online (Sandbox Code Playgroud)
使用这个在线翻译(http://repl.it/languages/Lua)它给出了错误
[string "stdin"]:2: '}' expected (to close '{' at line 1) near '='attempt to call a nil value
您需要将数字索引放在括号中:
dyeColor = {
[0]="black" , black = 0,
[1]="red" , red = 1,
[2]="green" , green = 2,
[3]="brown" , brown = 3,
[4]="blue" , blue = 4,
[5]="purple" , purple = 5,
[6]="cyan" , cyan = 6,
[7]="lightGray" , lightGray = 7,
[8]="gray" , gray = 8,
[9]="pink" , pink = 9,
[10]="lime" , lime =10,
[11]="yellow" , yellow =11,
[12]="lightBlue", lightBlue =12,
[13]="magenta" , magenta =13,
[14]="orange" , orange =14,
[15]="white" , white =15}
Run Code Online (Sandbox Code Playgroud)
你可以用以下方法节省一些打字:
dyeColor = {
[0]="black" ,
[1]="red" ,
[2]="green" ,
[3]="brown" ,
[4]="blue" ,
[5]="purple" ,
[6]="cyan" ,
[7]="lightGray" ,
[8]="gray" ,
[9]="pink" ,
[10]="lime" ,
[11]="yellow" ,
[12]="lightBlue",
[13]="magenta" ,
[14]="orange" ,
[15]="white" }
for i = 0, #dyeColor do dyeColor[dyeColor[i]] = i end
Run Code Online (Sandbox Code Playgroud)
Lua中允许NameS作为fieldspecS IN的形式,Name = exp而不是数字.数字必须放在括号中.现场参考也是如此.你可以说
dyeColor.black
Run Code Online (Sandbox Code Playgroud)
但不是
dyeColor.0 -- you may say dyeColor[0] of course
Run Code Online (Sandbox Code Playgroud)