如果表包含具有特定值的键
Posted
技术标签:
【中文标题】如果表包含具有特定值的键【英文标题】:If table contains a key with specific value 【发布时间】:2014-02-24 12:12:48 【问题描述】:这可能有点令人困惑,但我有一个表格,例如,名为Ant
。
此表包含一堆其他(未命名的)表。这些表代表蚂蚁,并保存值。
有点像这样:
Ant =
age=3,speed=10,
age=6,speed=7
我的问题是,如何检查 Ant 表中的任何未命名表是否包含 age
的特定值。
因此,例如,我想检查我的蚂蚁是否年龄为 3 岁。
我希望我已经足够清楚了,在此先感谢!
【问题讨论】:
【参考方案1】:您可以遍历表格并检查:
for i, v in ipairs(Ant) do
if v.age == 3 then
print( i )
end
end
它会 print the index 存放你 3 岁的蚂蚁。
【讨论】:
好吧,如果我有一个母亲的价值观,它需要改变。所以我遍历了所有的蚂蚁,但我只想改变其中的一个。 @DoorKnob 你能举个例子吗?说明情况? @DoorKnobbreak
在print
之后
谢谢,用户说得对。但是,为了澄清起见,假设我的蚂蚁都不是母亲。我想有个妈妈。我不想全部更改,只更改一个。
@DoorKnob 或(应用 SPOT 规则)将 Ant.mother
设置为蚂蚁之一:Ant.mother = Ant[i]
。 (Ant
应该是 Ants
来表示一个数组而不是单个实例)【参考方案2】:
如果您只需要检查每个子表中age
的值,构建自定义迭代器是另一种方式:
function age_iter(t)
local i = 0
return function()
i = i + 1
return t[i] and t[i].age
end
end
要遍历所有 age
值将是:
for age in age_iter(Ant) do
print(age)
end
很容易修改它以检查age
值之一是否等于3
。
【讨论】:
以上是关于如果表包含具有特定值的键的主要内容,如果未能解决你的问题,请参考以下文章