Fox*_*Fox 2 arrays lua lua-table
我想设置表成员的索引,但仍然命名它们.那可能吗?
local table = {
["cat"] = {
["fish"] = { stuff = "bla1", stuff2 = "bla" },
["mouse"] = { stuff = "bla2", stuff2 = "bla" },
["bird"] = { stuff = "bla3", stuff2 = "bla" },
},
["dog"] = {
["fish"] = { stuff = "bla1", stuff2 = "bla" },
["mouse"] = { stuff = "bla2", stuff2 = "bla" },
["bird"] = { stuff = "bla3", stuff2 = "bla" },
},
}
Run Code Online (Sandbox Code Playgroud)
table["cat"][1]是fish,但我想要的table["cat"][0]是fish,我怎样才能实现这一目标?
编辑:
我仍然希望能够访问fish使用table["cat"]["fish"].
EDIT2:
什么时候我试着这样做呢?http://repl.it/MCu 我做错了什么?
您的表和嵌套在表中的表是纯哈希样式,没有数组样式.
数组样式的Lua表:
local t = {"cat", "dog", "fish"}
Run Code Online (Sandbox Code Playgroud)
只是一个等价形式的语法糖:
local t = {[1] = "cat", [2] = "dog", [3] = "fish"}
Run Code Online (Sandbox Code Playgroud)
您可以使用所有类型的键,除了nil,确保您可以使用从0以下开始的整数键:
local t = {[0] = "cat", [1] = "dog", [2] = "fish"}
Run Code Online (Sandbox Code Playgroud)
需要注意的是,从开始0制作t不再是一个序列,让你失去的是使用只在序列表函数的力量,像#运营商,ipairs等等.
要构建具有不同键的表,可以先创建值表,然后将不同的键绑定到同一个表,如下所示:
local v = {
["fish"] = { stuff = "bla", stuff2 = "bla" },
["mouse"] = { stuff = "bla", stuff2 = "bla" },
["bird"] = { stuff = "bla", stuff2 = "bla" },
}
local t = {
["cat"] = v,
[0] = v,
}
print(t.cat.fish.stuff, t[0].fish.stuff)
-- Output: bla bla
Run Code Online (Sandbox Code Playgroud)
通过这种方式,t.cat并t[0]访问同一个表.
请注意,您可以使用语法糖形式table.cat.fish而不是table["cat"]["fish"]
只是澄清一下,table["cat"][1] 上面fish的表示例根本没有使用表的索引部分。要使用表的索引部分,键本身必须是整数。
修改上面的例子:
local animal = {
cat = {
fish = { stuff = "bla", stuff2 = "bla" },
mouse = { stuff = "bla", stuff2 = "bla" },
bird = { stuff = "bla", stuff2 = "bla" },
},
dog = {
fish = { stuff = "bla", stuff2 = "bla" },
mouse = { stuff = "bla", stuff2 = "bla" },
bird = { stuff = "bla", stuff2 = "bla" },
},
}
Run Code Online (Sandbox Code Playgroud)
如果你想要animal.cat.fish和animal.cat[1]具有相同的值(相同的 lua 表),只需执行常规分配:
animal.cat[1] = animal.cat.fish
-- and likewise if you want index 0:
animal.cat[0] = animal.cat.fish
Run Code Online (Sandbox Code Playgroud)
请注意,许多与表一起使用的标准 lua 函数都是从 1 开始计数的。
| 归档时间: |
|
| 查看次数: |
543 次 |
| 最近记录: |