lua таблиц - строковое представление - PullRequest
0 голосов
/ 11 января 2020

в качестве дополнительного вопроса к lua таблицам - допустимые значения и синтаксис :

Мне нужна таблица, которая приравнивает большие числа к строкам. Похоже, уловка в том, что строки с пунктуацией недопустимы:

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 жалуется, что "}", как ожидается, закроет "{" в строке. Как я могу реализовать таблицу со строкой, которая содержит пробелы и знаки пунктуации?

1 Ответ

2 голосов
/ 11 января 2020

Согласно Lua Справочное руководство - 3.1 - Лексические соглашения :

Короткая литеральная строка может быть разделена соответствующими одинарными или двойными кавычками и может содержать ( ...) C -подобные escape-последовательности (...).

Это означает, что короткая литеральная строка в Lua имеет вид:

local foo = "I'm a string literal"

Это соответствует вашему Второй пример Причина сбоя заключается в том, что в нем отсутствует разделитель между элементами таблицы:

local Names = {
   [7022003001] = "fulsom jct, OH",
   [7022003002] = "kennedy center, NY"
}

Вы также можете добавить конечный разделитель после последнего члена.

Более подробное описание конструктора таблицы можно найти в 3.4.9 - Конструкторы таблиц . Его можно подвести итог приведенному там примеру:

a = { [f(1)] = g; "x", "y"; x = 1, f(x), [30] = 23; 45 }

Я действительно очень рекомендую использовать Справочное руководство Lua, это замечательный помощник.

Я также настоятельно рекомендую вам прочитать некоторые основные c учебные пособия, например, Обучение Lua за 15 минут . Они должны дать вам обзор языка, который вы пытаетесь использовать.

...