首页 > 解决方案 > 在 LUA 中对嵌套表项进行操作

问题描述

如何使用 LUA 添加嵌套表中的某些值。

假设对于列表中未确定数量的项目,我希望将所有“计数”值添加到一个变量中。

在以下只有 2 个项目的示例中,期望的结果是具有一个值为“5”的变量,因为它分别添加了来自“master”和“data”项目的“count:3”和 count:2”值.

spec:
  nodeSets:
  - config:
      node.store.allow_mmap: true
    count: 3
    name: master
    podTemplate:
      metadata:
        annotations:
          sidecar.istio.io/inject: "false"
  - config:
      node.store.allow_mmap: true
    count: 2
    name: data
    podTemplate:
      metadata:
        annotations:
          sidecar.istio.io/inject: "false"

标签: luascripting

解决方案


要访问count每个配置中的值,您不一定需要遍历嵌套结构,这需要多个嵌套的 for 循环。想一个像这样的结构

letters = {
    a = {1, 2, 3, 4, 5},
    b = {6, 7, 8, 9, 10},
    c = {11, 12, 13, 14, 15},
}

在这里,我们需要 2 个 for 循环,一个用于检索字母中的项目,一个用于检索这些项目中包含的所有嵌套项。

您的问题的解决方案只需 1 个循环即可完成。我们只需要遍历表nodeSets并索引存储在该表中的每个值的计数。

local sum = 0; 
for _,node in pairs(obj.spec.nodeSets) do
    sum = sum + node.count 
end

推荐阅读