列表:= [“a:aqsdf”、“a:asdf”、“b:gfs”、“b:sdf”、“a:adfd”、“b:asdfd”]
我希望新列表仅包含以 'a' 开头的项目:["a:aqsdf", "a:asdf", "a:adfd"]
我尝试过使用套装但没有成功。这在 python 中将是一件轻而易举的事,但我似乎无法理解 rego。我可以把它变成一个集合,但不知道如何挤进 if 语句(startswith(list[_], "a") == true)
列表:= [“a:aqsdf”、“a:asdf”、“b:gfs”、“b:sdf”、“a:adfd”、“b:asdfd”]
我希望新列表仅包含以 'a' 开头的项目:["a:aqsdf", "a:asdf", "a:adfd"]
我尝试过使用套装但没有成功。这在 python 中将是一件轻而易举的事,但我似乎无法理解 rego。我可以把它变成一个集合,但不知道如何挤进 if 语句(startswith(list[_], "a") == true)
一种方法是使用数组理解和startswith
内置函数:
[ x | x := list[_]; startswith(x, "a")]
游乐场示例:https ://play.openpolicyagent.org/p/8mQYYvUL2h
这实质上是在定义一个新数组,其中包含x
规则主体是否为真的值。推导式的规则体依次迭代 的list
值的所有x
指标,并且当 的值以x
开头时为真"a"
。
参考: