таблицы lua - строковое представление

в качестве дополнительного вопроса к таблицам 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
}

Когда этот модуль загружен, wirehark жалуется, что "}" закроет "{" в строке. Как я могу реализовать таблицу со строкой, содержащей пробелы и знаки препинания?


person buzzard51    schedule 10.01.2020    source источник
comment
Почему вы говорите, что цитаты не разрешены?   -  person Joseph Sible-Reinstate Monica    schedule 11.01.2020
comment
Между элементами должна быть запятая, то есть перед [7022003002].   -  person lhf    schedule 12.01.2020


Ответы (1)


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

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

Это означает, что короткая буквальная строка в 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, это отличный помощник.

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

person Green    schedule 10.01.2020