我对流口水还比较陌生,并且遇到了一些我无法真正理解的问题。
我正在尝试解决分配问题,我的一个LHS像这样

$ leftAlloc:SlotAllocation($ leftRes:resource)
$ rightAlloc:SlotAllocation(this!= $ leftAlloc,资源== $ leftRes)


由于某种原因,即使您确定工作内存中存在匹配项,第二条语句也不会匹配任何内容。如果我用以下代码更改上面的代码,则可以正常工作

$ leftAlloc:SlotAllocation($ leftRes:resource)
$ rightAlloc:SlotAllocation(this!= $ leftAlloc,eval(资源== $ leftRes))


有人可以向我解释吗?

谢谢!

最佳答案

您最好在Drools用户的邮件列表上问这个问题(如果您不想乱丢邮箱,请使用新闻组阅读器连接到news.gmane.org)。

至于你的问题:那真的很奇怪。我只看到一个不太可能的解释:

首先,您应该知道DRL中的resource == $leftRes)实际上会调用getResource().equals($leftRes),因此它不是相同/指针检查,而是等价检查。

另一方面,eval(resource == $leftRes)将使用相同/指针检查。
所以这个不太可能的理论是您的Resource类会覆盖Object.equals方法,并且当它是同一实例时甚至不会返回true。

PS:如果您还有其他问题,并且也希望得到解答,请在用户邮件列表上继续进行此讨论。

关于java - 流口水专家/求解器-5.0.1匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1245722/

10-10 03:48