需要擅长于使用pyke中的in规则

前面在pyke引擎的总结文章中多次提到pyke是为了寻找一个集合中的组合方式而构建的推理引擎。在一种方式里,我们可以通过kfb文件或者_assert,add_universal_fact等方法去声明很多事实。但在构建一些规则的时候,我们需要一个模式去在一些其他方式构建的集合中去遍历。例如我们需要某一个对象遍历从0到10之间所有的数字,来检验一些规则。在这种情况下,我们就需要使用$pattern in python_iterable这样的方式来创建遍历集合了。使用规则示例如下:

test
        use test($pair)
        when
                $first in [0,1,2,3,4]
                $second in ['a', 'b', 'c']
                $pair = str($first) + '_' + $second


测试结果:(with engine.prove_goal(<rule_base>.test($pair)) as gen: ....)

result: {'pair': '0_a'}
result: {'pair': '0_b'}
result: {'pair': '0_c'}
result: {'pair': '1_a'}
result: {'pair': '1_b'}
result: {'pair': '1_c'}
result: {'pair': '2_a'}
result: {'pair': '2_b'}
result: {'pair': '2_c'}
result: {'pair': '3_a'}
result: {'pair': '3_b'}
result: {'pair': '3_c'}
result: {'pair': '4_a'}
result: {'pair': '4_b'}
result: {'pair': '4_c'}

发表评论

邮箱地址不会被公开。 必填项已用*标注