0

如何从 Rego Open Policy Agent 语言中的字符串创建集合?

我有一串元素,比如"values": "pvc-volume,emptydir-volume,hostPath,ConfigMaps"哪些元素需要根据一组给定的允许值进行验证

valid_backup_profiles := {
      "pvc-volume",
      "emptydir-volume"
    }

例如使用交叉点

valid_backup_profiles & elements_coming_from_string_above

我知道该split(string, ",")函数返回一个元素数组,但该数组不能与集合相交。有没有什么聪明的方法可以从字符串而不是数组生成集合?

4

1 回答 1

1

诀窍是使用集合理解

s := {x |
  some i
  parts := split(string, ",")
  x := parts[i]
}

如果需要,您可以像这样在一行上执行此操作:

s := {x | x := split(string, ",")[_]}

显然这很好而且很紧凑,但是上面的表格更容易阅读。如果要使逻辑可重用,只需定义一个函数:

split_csv_set(str) = {x |
  some i
  parts := split(str, ",")
  x := parts[i]
}
于 2020-05-02T15:34:38.597 回答