json - 具有泛型的递归类的 Scala json 格式
问题描述
我正在尝试将规则捕获到模型中,这就是我所拥有的
trait Criterion[T] {
val name: String
def matches(t: T): Future[Boolean]
}
trait Predicate[T] extends Criterion[T] {
val criteria: Seq[Criterion[T]]
val operand: RuleOperand.Name
override def matches(t: T): Future[Boolean] = {
val predicate: Boolean => Boolean = if (operand == RuleOperand.ANY) _ == true else _ == false
Future.find(criteria.map(_.matches(t)))(predicate) map {
case Some(true) if operand == RuleOperand.ANY => true
case Some(false) if operand == RuleOperand.ALL => true
case _ => false
}
}
}
case class WeightCriterion(limit: Int) extends Criterion[Person] {
override val name: String = "weight"
override def matches(person: Person): Future[Boolean] =
Future.successful(person.weight > limit)
}
case class HeightCriterion(limit: Int) extends Criterion[Person] {
override val name: String = "height"
override def matches(person: Person): Future[Boolean] =
Future.successful(person.height > limit)
}
Criterion
从 Object 到 Json 以及从 Json 到 Object 都可以很好地工作,但是我无法使Predicate
格式正常工作,我怎样才能让它工作?
解决方案
推荐阅读
- linux - 在awk中提取列的列?
- python - 散景:在轴刻度标签中使用 HTML?
- r - R中的igraph:制作图像()绘制一个邻接矩阵,轴从左上角而不是左下角开始?
- postgresql - 从 SELECT 填充数组的最佳方法
- go - 如何显式查找字段为 NULL 的记录?
- android - 通过 Google Maps SDK 在 Android 中使用预填充的地图
- node.js - 多个连接时,套接字因 ping 超时断开连接并关闭传输
- postman - Postman 控制台输出可点击 URL
- pycharm - 无法在 PyCharm 变量资源管理器中正确查看数据
- python - 非二叉树高度(优化)