lua - 您可以将实例保存在表中吗?
问题描述
当我尝试在表中保存具有相同名称的实例时,它会覆盖它而不是创建第二个键。我们不能保存它作为参考吗?
我试图做的例子:
local t = {}
local model1 = Instance.new("Model")
local model2 = Instance.new("Model")
t[model1] = model1
t[model2] = model2
解决方案
当然可以,您可以将模型用作键或值,它工作得很好。
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:您的代码运行良好。
推荐阅读
- c# - 如何手动帮助 DbContext 了解这种情况下的变化?
- python - 在 pandas 的列中计算 False 或 True 的出现次数
- c++ - 导入没有 .dll 和 .lib 的外部 C++ 库
- mysql - Codeigniter 选择查询在读取 varchar 时返回所有行,其中为 null
- recaptcha - 将 Google reCaptcha 从 v2 更新到 v3
- pyodbc - Azure 使用来自 Azure webjob 的 pyodbc 登录到用户 db
- c - OpenMP 分段错误
- scala - 火花在UDF中创建数据框
- swift - SCNNode 枢轴位置
- python - 用于在字符串中查找 3 个或更多破折号的 grep 正则表达式解决方案