#lua
#lua
Вопрос:
Есть ли в Lua библиотека, которая поддерживает сопоставление из кортежа в кортеж? У меня есть ключ {a, b, c} для сопоставления со значением {c, d, e}, есть библиотеки, такие как,http://lua-users.org/wiki/MultipleKeyIndexing для нескольких ключей, но не там, где значение является кортежем.
Комментарии:
1. Преобразуйте свой кортеж в строку
tostring(a)..";"..tostring(b)..";"..tostring(c)
и используйте эту строку в качестве индекса.2. Я не вижу никаких ограничений на тип (ы) значений в связанной библиотеке.
Ответ №1:
Вот один из способов использовать предложение Егора по созданию ключа с помощью конкатенации строк. Создайте свои собственные простые методы insert и get для таблицы, т. е.
local a, b, c = 10, 20, 30
local d, e, f = 100, 200, 300
local t = {}
t.key = function (k)
local key = ""
for _,v in ipairs(k) do
key = key .. tostring(v) .. ";"
end
return key
end
t.set = function (k, v)
local key = t.key(k)
t[key] = v
end
t.get = function (k)
local key = t.key(k)
return t[key]
end
t.set ({a, b, c}, {d, e, f}) -- using variables
t.set ({40, 50, 60}, {400, 500, 600}) -- using constants
local w = t.get ({a, b, c}) -- using variables
local x = t.get ({40, 50, 60}) -- using constants
print(w[1], w[2], w[3]) -- 100 200 300
print(x[1], x[2], x[3]) -- 400 500 600
Комментарии:
1. Ваша «вставка» сильно отличается от
table.insert
. Пожалуйста, используйте «set» в качестве дополнения к «get».