многоключевой кортеж для отображения многозначного кортежа в Lua - PullRequest
1 голос
/ 07 марта 2019

Есть ли в Lua библиотека, которая поддерживает карту от кортежа до кортежа? У меня есть ключ {a, b, c} для сопоставления со значением {c, d, e} Существуют библиотеки, такие как http://lua -users.org / wiki / MultipleKeyIndexing для multikey, но не там, где значение является кортежем.

1 Ответ

2 голосов
/ 08 марта 2019

Вот один из способов использовать предложение Егора для создания ключа через конкатенацию строк.Сделайте свою собственную простую вставку и получите методы для таблицы, т.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...