使用 LUA 操作嵌套表项

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

假设对于列表中未确定数量的项目,我想将所有“count”值相加的结果存储在一个变量中。

在下面的示例中,仅有两个项目,所需结果是,将“master”和“data”项目中的“count: 3”和“count: 2”值相加得到一个值为“5”的变量。

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"
点赞
用户7396148
用户7396148

访问每个配置中的count值并不一定需要遍历嵌套结构,这需要多个嵌套循环。考虑下面的结构:

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

在这里,我们需要2个循环,一个是获取letters中的项目,另一个是获取所有嵌套在这些项目中的项目。

你的问题解决方案只需要一个循环即可。我们只需要循环遍历nodeSets表格,并索引存储在该表格中的每个值的数量。

local sum = 0;
for _,node in pairs(obj.spec.nodeSets) do
    sum = sum + node.count
end
2021-04-07 16:58:14