测试是否在规则左侧的 BitSet 中设置了一个位

发布于 2024-12-25 00:27:42 字数 293 浏览 1 评论 0原文

我有一个 BitSet 成员,在给定的规则中,我想测试是否设置了特定位,例如:

class Foo
{
  BitSet bar;
  // getter & setter
}

我想要的规则:

rule "Test Bitset"
  when
    $f : Foo(bar ???) <-- what does this look like?
  then
    // do something
end

这可能吗?

I have a member which is a BitSet, and in a given rule, I'd like to test whether a particular bit is set, for example:

class Foo
{
  BitSet bar;
  // getter & setter
}

My rule that I would like:

rule "Test Bitset"
  when
    $f : Foo(bar ???) <-- what does this look like?
  then
    // do something
end

Is this possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鹿童谣 2025-01-01 00:27:42

根据文档,

Foo(bar.get(3))

这是一种有效的方法。

Drools 文档

According to the docs

Foo(bar.get(3))

would be a valid way to do it.

Drools doc

一片旧的回忆 2025-01-01 00:27:42

像这样的事情是有效的:

BitSet bitSet = new BitSet();
bitSet.set(3);
bitSet.set(1);

int index = 3;
Foo foo = new Foo();
foo.setBar( bitSet );

BitSet bits = foo.getBar();
System.out.print( bits.get(index) );

打印“true”,因为十进制 10 的 BitSet 结果为二进制 1010,第 4 位(从右侧读取,零索引)是 1,所以 true。

您应该能够将其转换到您的算法中。

Something like this works:

BitSet bitSet = new BitSet();
bitSet.set(3);
bitSet.set(1);

int index = 3;
Foo foo = new Foo();
foo.setBar( bitSet );

BitSet bits = foo.getBar();
System.out.print( bits.get(index) );

That prints "true" as the BitSet for decimal 10 results in binary 1010, the 4th bit (reading from the right, zero indexed) is 1, so true.

You should be able to transpose that into your algorithm.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文