作为lua tables - allowed values and syntax的后续问题:
我需要一个将大数字等同于字符串的表。要注意的是似乎不允许使用带标点符号的字符串:
local Names = {
[7022003001] = fulsom jct, OH
[7022003002] = kennedy center, NY
}
但都不是引号:
local Names = {
[7022003001] = "fulsom jct, OH"
[7022003002] = "kennedy center, NY"
}
我什至尝试没有任何空格:
local Names = {
[7022003001] = fulsomjctOH
[7022003002] = kennedycenterNY
}
当加载此模块时,wireshark会抱怨“}”在行处关闭“ {”。如何使用包含空格和标点符号的字符串实现表?
按照Lua Reference Manual - 3.1 - Lexical Conventions:
短文字字符串可以通过匹配单引号或双引号来定界,并且可以包含(...)类C的转义序列(...)。
这意味着Lua中的短文字字符串是:
local foo = "I'm a string literal"
这与您的第二个示例匹配。它失败的原因是因为它在表成员之间缺少分隔符:
local Names = {
[7022003001] = "fulsom jct, OH",
[7022003002] = "kennedy center, NY"
}
您还可以在最后一个成员之后添加尾随分隔符。
表构造函数的更详细描述可以在3.4.9 - Table Constructors中找到。可以通过此处提供的示例进行总结:
a = { [f(1)] = g; "x", "y"; x = 1, f(x), [30] = 23; 45 }
我真的非常建议使用Lua参考手册,它确实是一个了不起的助手。
我也强烈建议您阅读一些基本教程,例如Learn Lua in 15 minutes。他们应该为您提供您要使用的语言的概述。