【问题标题】:lua tables - string representationlua 表 - 字符串表示
【发布时间】:2020-01-11 07:30:59
【问题描述】:

作为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 抱怨 "}" 应该在 line 处关闭 "{"。如何使用包含空格和标点符号的字符串实现表?

【问题讨论】:

  • 为什么说引号是不允许的?
  • 项目之间需要一个逗号,即[7022003002]之前。

标签: lua wireshark-dissector


【解决方案1】:

根据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。他们应该为您提供您尝试使用的语言的概述。

【讨论】:

    猜你喜欢
    • 2020-02-20
    • 2018-11-07
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 2013-11-15
    • 2021-12-11
    相关资源
    最近更新 更多