0
package play


exists(obj, a) {
   obj[a]
}


hello {
     exists(input, "department")
     contains(input["location"], "London")
}

world {        
    contains(input["location"], "London")
    exists(input, "department")    
}

输入= {“部门”:“英语”,“位置”:“伦敦”}

上面的代码只匹配hello。为什么即使条件相同,世界也不匹配,但顺序颠倒了?

4

1 回答 1

2

语句的顺序无关紧要。您实际上发现了一个错误

如果您稍微更改示例,exists则不会将其input作为第一个参数调用,而是类似于exists(input.user, "department")然后更新输入文档以反映这一点:

{"user": {"department": "Eng", "location": "London"}}

您将观察到正确的行为(例如,world { contains(input.user["location"], "London"); exists(input.user, "department") })。

于 2020-02-10T13:26:42.530 回答