【问题标题】: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 岁。

我希望我已经足够清楚了,在此先感谢!

【问题讨论】:

    标签: lua lua-table


    【解决方案1】:

    您可以遍历表格并检查:

    for i, v in ipairs(Ant) do
      if v.age == 3 then
        print( i )
      end
    end
    

    它会 print the index 存放你 3 岁的蚂蚁

    【讨论】:

    • 好吧,如果我有一个母亲的价值观,它需要改变。所以我遍历了所有的蚂蚁,但我只想改变其中的一个。
    • @DoorKnob 你能举个例子吗?说明情况?
    • @DoorKnob breakprint之后
    • 谢谢,用户说得对。但是,为了澄清起见,假设我的蚂蚁都不是母亲。我想有个妈妈。我不想全部更改,只更改一个。
    • @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

    【讨论】:

      猜你喜欢
      • 2021-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多