你可以在表中保存实例吗?

当我尝试将同名实例保存到表中时,它会覆盖而不是创建第二个键。我们不能按引用保存它吗?

下面是我尝试的示例:

local t = {}

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

t[model1] = model1
t[model2] = model2
点赞
用户2860267
用户2860267

当然可以,您可以将模型用作键或值,它可以正常工作。

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

local t = {}

-- 使用模型作为键
t[model1] = "a"
t[model2] = "b"
print(t[model1], t[model2], t[model1] == t[model2]) -- a, b, false

-- 使用模型作为值
t["a"] = model1
t["b"] = model2
print(t["a"], t["b"], t["a"] == t["b"]) -- Model, Model, false

-- 同时使用模型作为键和值
t[model1] = model1
t[model2] = model2
print(t[model1], t[model2], t[model1] == t[model2]) -- Model, Model, false

-- 显示在表中存储的所有键
t = {}
t[model1] = model1
t[model2] = model2
for k, v in pairs(t) do
    print(k, v)
end
--[[ 输出:
    Model Model(x2)
]]

最后一个示例显示,在键索引中没有冲突,两个模型都被正确存储。可能有些难以看到其差异,因为两个模型具有相同的名称。

话虽如此,将模型存储为键和值并没有太大意义,因为如果您可以访问键,那么您已经拥有了模型。

简而言之:您的代码可以正常工作。

2020-03-30 20:16:45