Раздел: CronosPRO | Дата редакции: 11.07.2013 | id статьи: 1531 |
Создание таблиц в Lua. Работа с полями
Создать пустую таблицу можно следующим образом:
t = {}
Для доступа к полю таблицы используется запись вида:
имя_переменной[ключ]
t = {} -- создаем пустую таблицу t[1] = "first" -- новое поле таблицы, с ключом 1 и значением "first" t[2] = 20 -- новое поле, с ключом 2 и значением 20 k = "name" t[k] = "Jane" -- новое поле, с ключом "name" и значением "Jane" a = t[1] -- переменная a получает значение "first" b = t[2] -- переменная b получает значение 20 c = t["name"] -- переменная c получает значение "name"
В случае строковых ключей вместо записи t["name"] можно использовать запись t.name:
t.name = "name" -- эквивалентно t["name"] = "name" a = t.name -- эквивалентно a = t["name"]
Обратите внимание
- Выражение t.name не равнозначно t[name]. Первое выражение
представляет поле таблицы, ключом которого является строка "name" (то есть эквивалентно t["name"]).
Второе выражение представляет поле, ключом которого является значение переменной name. Различия между
этими выражениями показаны в следующем примере:
t = {} name = "somebody" t[name] = "Jane" -- в поле "somebody" помещено значение "Jane" a = t[name] -- переменная a получает значение поля "somebody" ("Jane") b = t.name -- поля "name" не существует, переменная b получает nil c = t.somebody -- переменная c получает значение поля "somebody" ("Jane")
Если поля таблицы с заданным ключом не существует, обращение к нему дает nil:
t = {} a = t.name -- переменная a получает значение nil
Для удаления поля таблицы достаточно присвоить ему nil:
t.second = nil
Таблицу можно заполнить значениями непосредственно при создании. Для этого в фигурных скобках следует перечислить
ключи и значения элементов таблицы (в формате [ключ]=значение). Элементы отделяются друг от друга запятыми (,)
или точками с запятой (;):
t = {["red"]="красный", ["green"]="зеленый", ["blue"]="синий"}
Приведённая запись эквивалентна следующему коду:
t = {} t.red = "красный"; t.green = "зеленый"; t.blue = "синий"
В случае строковых ключей квадратные скобки (и двойные кавычки) можно не указывать:
t = {red="красный", green="зеленый", blue="синий"}
Если необходимо создать таблицу, поля которой также являются таблицами, это можно сделать следующим образом:
points = { a = {x=20, y=1}, b = {x=40, y=2} }
Приведённая запись эквивалентна следующему коду:
points = {} p.a = {x=20, y=1}, p.b = {x=40, y=2}
Примечание
- В ИСУБД «CronosPRO» итерация по некоторым системным таблицам запрещена. Такие таблицы называются защищёнными. В частности, итерация запрещена по глобальной таблице _G.