[rules-users] Scope of bindings, identical patterns
Mark Proctor
mproctor at codehaus.org
Fri Oct 26 11:15:26 EDT 2007
Julian Morrison wrote:
> Suppose I have a rule like:
>
> rule "foo"
> when
> $a : Cheese(name="Stilton")
> $b : Cheese(name="Stilton")
> then
> # etc
> end
>
> First question: is it possible that a == b ? In other words, can both
> patterns end up matching the same object in one activation? I have been
> assuming this is so, but it isn't covered in the docs so far as I can see.
>
Yes this is no different from
select * from Cheese a, Cheese b
> Second question: why can't I add as a pattern, $a != $b ? The eclipse
> IDE compiler complains they are undefined. What is the scope of the
> bindings defined by $a and $b ?
>
$a : Cheese(name=="stilton")
$b : Cheese( this != $a, name == "stilton" )
Or you can use an eval:
eval( $a != $b )
More information about the rules-users
mailing list