计算机系统应用教程网站

网站首页 > 技术文章 正文

43-drools基础语法(比较操作符_memberof)

btikc 2024-11-16 17:21:04 技术文章 2 ℃ 0 评论

接下来继续来看比较操作符。刚才演示了一下content以及notcontent,一个是包含,一个是不包含。再往下要看的是memberof以及notmemberof。在这要测试的是比较操作符,叫做memberof。把规则写一下,规则的名称稍微修改一下,改成memberof。后边是不是写when,最后是and。

这个部分当时提过叫做l、h、s,n部分是不是叫做r、h、s。在这一部分应该怎么写?其实跟前面写法非常类似,把它拿过来。

·首先进行类型匹配,到工作内存里面去找这种类型的元素,并且这里边要测试的是numberof,代表的就是前面值必须是后边值的成员。比如这里边是不是有个内慕斯属性,要numberoflist。还记得在这个类里边是不是一个内用词属性,它是个词ging的,还有个list属性,它是这种集合类型的。

·现在这个表达式的含义是什么?就是必须要到工作内存里面去查找这么一种类型的元素,并且它的内慕斯属性要什么?要是历史的集合里边的一个成员,慢慢饿不饿?如果能够匹配成功,是不是就要执行这个部分?在这个部分现在也没什么好做的,所以就直接输出了一下。

·把这块输出一下规则,哪个规则?把规则的名称改造一下,改成这个。如果在控制台能够看到这句话,就说明这个规则是成立了。这个规则非常简单,就已经编写完了。

·重点就是来看一下numberof的用法。接下来来执行一下刚才编写的test2单元测试,但是在执行之前先来分析一下,就拿当前给进去的值来看,当前刚刚编写的规则能够触发吗?就看内慕斯是不是这个类似的元素?next是不是给的是李四?而这个list里边只有一个元素是张三二,很明显是不是应该不会成立?

·现在来执行一下,来看控制台。大家注意看控制台输出的是notcontent,因为刚才测试过了,是不是上面规则出发了,下边规则是不是并没有出发?现在如果希望下边规则出发怎么办?是不是意味着name四必须是list的元素lift是不是李四?立四里边是不是加一个李四进去就可以了?立四的点add什么?李四。这样names是不是就是list的元素了?这样后边规则应该就可以出发了。

·number of这个时候是不是就触发了?这是刚才测试了一下member of,同时再来复制一段来加一个not member of,想测试的是not member of,把这儿是不是给加一个note就可以了?注意中间是有空格的,别连一块儿写。

·然后在这儿来个note number of,就是不包含,不包含就意味着names应该不是list的成员变量。当前很明显这不是李四,这有一个李四,所以是它的成型变量。刚刚编写的最后一个规则应该是不能成立的,是不是并没有触发?如果想让它触发就可以怎么做?把这个是不是给注视起来?注视起来是不是意味着names并不是list的成员?这样规则是不是就模式是不是就匹配上了?匹配上之后规则是不是就会触发?

·member of当然了,因为代码改回去了,原先not member of也出发了,前面已经讲过了,就不再多说了。重点关注的是后边not member of是不是就出发了?所以通过控制台输出也能够看到,当在执行规则引擎的时候有可能有多个规则是不是同时都执行?因为都匹配到了,所以并不是只有一个规则能执行。

如果所有的规则都能够匹配成功,都可以触发,就是可以同时触发多个规则,这都是可以的。刚才主要就是讲了一下member of以及not member of这两个比较操作符。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表