【发布时间】:2015-02-09 16:52:00
【问题描述】:
(强制性新手免责声明)
我正在尝试编写一个规则,只要(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)
我已经在没有“.get()”的情况下进行了尝试,只是为了获取 Some() 类型的对象。
使用“.get()”,我设法返回了 Option 的内容,但它似乎与预期的类型(List[TypeB])不匹配。相反,返回值的类型似乎是 scala.collection.immutable.$colon$colon
对问题所在有什么想法吗?以及是否有任何适当的方法来处理 Drools 中的选项?
【问题讨论】:
-
又是你! @laune 没有,我警告过你将 Scala 与 Drools 一起使用。没有经过 Drools 人官方验证这两个工具是否兼容。
-
是的,我又来了 ;) 收到警告,但我正在使用 Scala 对象(暂时别无选择)并使用 Java 方法与它们进行交互...这更像是一个概念证明在此刻。到目前为止,我已经成功地在 Java 中很好地使用了 Scala 对象,只是这个小烦恼让我暂时退缩了……想法?
-
List 是一些对象 property 并没有什么坏处。这是一个“按原样”使用的列表(或任何其他集合或地图),这是一个不好的设计。
-
用
Option包装您的清单有多重要?您是否尝试过查看您返回的类型?我很想知道返回的类型。你能做到吗? -
不幸的是,案例类不是我自己的,但它是我必须使用的(无法更改它们)。我已经使用 .get() 进行了尝试,但我得到的只是 scala.collection.immutable.$colon$colon 类型的东西......我认为它是一个带有头部和尾部的通用列表。调查您的答案: mo 中的 javaconverters ... 似乎非常有用!谢谢
标签: list scala drools scala-option