Rego - 将数组分配给现有数组
Rego - assign array to existing array
我在 Rego 中遇到了一个奇怪的行为,我想知道为什么会这样。
Link 到 Rego 游乐场
当我创建一个空数组并为其分配新数组时,第一个数组的计数仍然为零:
package play
x[{"msg": msg}]{
c := []
a := [1,2]
b := [3,4]
c = array.concat(a,b)
count(c) > 0
msg := "Length of c is greater than zero"
}
输出为:
{
"x": []
}
那么,我有两个问题:
为什么我在行 count(c)> 0 中得到 false?
如何将数组分配给现有数组? (我需要它,因为我有 returns 数组的功能,我正在尝试 return 连接 2 个数组。例如:
func[{"msg": msg}] = c{
一个:= [1,2]
b := [3,4]
c = array.concat(a,b)
}
谢谢!
Rego 值和变量是不可变的,因此无法为已经存在的变量分配新值。您的示例由于使用 unification 运算符 (=
) 而不是赋值运算符 (:=
) 而编译。
在您提供的示例中,只需删除第一个赋值:
package play
x[{"msg": msg}]{
a := [1,2]
b := [3,4]
c := array.concat(a,b)
count(c) > 0
msg := "Length of c is greater than zero"
}
我在 Rego 中遇到了一个奇怪的行为,我想知道为什么会这样。
Link 到 Rego 游乐场
当我创建一个空数组并为其分配新数组时,第一个数组的计数仍然为零:
package play
x[{"msg": msg}]{
c := []
a := [1,2]
b := [3,4]
c = array.concat(a,b)
count(c) > 0
msg := "Length of c is greater than zero"
}
输出为:
{
"x": []
}
那么,我有两个问题:
为什么我在行 count(c)> 0 中得到 false?
如何将数组分配给现有数组? (我需要它,因为我有 returns 数组的功能,我正在尝试 return 连接 2 个数组。例如:
func[{"msg": msg}] = c{ 一个:= [1,2] b := [3,4] c = array.concat(a,b) }
谢谢!
Rego 值和变量是不可变的,因此无法为已经存在的变量分配新值。您的示例由于使用 unification 运算符 (=
) 而不是赋值运算符 (:=
) 而编译。
在您提供的示例中,只需删除第一个赋值:
package play
x[{"msg": msg}]{
a := [1,2]
b := [3,4]
c := array.concat(a,b)
count(c) > 0
msg := "Length of c is greater than zero"
}