Можете ли вы сохранить экземпляры в таблице? - PullRequest
1 голос
/ 30 марта 2020

Когда я пытаюсь сохранить экземпляр с тем же именем в таблице, он переопределяет его вместо создания второго ключа. Разве мы не можем сохранить его как ссылку?

пример, который я пытаюсь сделать:

local t = {}


local model1 = Instance.new("Model")
local model2 = Instance.new("Model")

t[model1] = model1
t[model2] = model2

1 Ответ

0 голосов
/ 30 марта 2020

Конечно, вы можете, вы можете использовать Модели в качестве ключей или в качестве значений, и это прекрасно работает.

local model1 = Instance.new("Model")
local model2 = Instance.new("Model")
print(model1 == model2) -- false

local t = {}

-- use the models as keys
t[model1] = "a"
t[model2] = "b"
print(t[model1], t[model2], t[model1] == t[model2]) -- a, b, false

-- use the models as values
t["a"] = model1
t["b"] = model2
print(t["a"], t["b"], t["a"] == t["b"]) -- Model, Model, false

-- use the models as keys and values
t[model1] = model1
t[model2] = model2
print(t[model1], t[model2], t[model1] == t[model2]) -- Model, Model, false

-- show all the keys stored in the table
t = {}
t[model1] = model1
t[model2] = model2
for k, v in pairs(t) do
    print(k, v)
end
--[[ prints out :
    Model Model (x2)
]]

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

При этом не имеет особого смысла хранить модель как обе клавиши и значение, потому что, если вы можете получить доступ к ключу, у вас уже есть Модель.

TL; DR: Ваш код работает просто отлично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...