2

(必須の初心者免責事項)

(scala) リスト内のオブジェクトが条件に一致するたびに起動するルールを作成しようとしています。ここでの問題は、リストが実際には Option(List[TypeA]) であるということです... (また、リストを作業メモリに保存することはベストプラクティスではないことを認識していますが、状況を考えると、それ以外の方法はできません)

私が使用しているケース クラスには、次のような構造があります。

TypeA {
    arg1 : Option[List[TypeB]]
}

TypeB {
    value : String
}

私はこれに似たルールを書きました:

when
    $a : TypeA($l : arg1)
    $b : TypeB() from $l.get()
then
    System.out.println($b)

タイプ Some() のオブジェクトを取得するためだけに、「.get()」なしでこれを試しました。

「.get()」を使用して、オプションの内容を返すことができましたが、期待される型 (List[TypeB]) と一致していないようです。代わりに、返される値の型は scala.collection.immutable.$colon$colon のようです

問題が何であるかについてのアイデアはありますか?また、Drools でオプションを処理する適切な方法があれば教えてください。

4

2 に答える 2

0

私が試すことができる唯一のこと:

when
    $a : TypeA($l : arg)
    $b : TypeB() from (ArrayList)$l.get() // or some other Java *-List
then
    System.out.println($b)

もう一度試す価値があります:

when
    $a : TypeA($l : arg)
    $b : TypeB() from $l.get()asJava()*-List
then
    System.out.println($b)
于 2015-02-09T17:53:37.940 に答える