【发布时间】:2017-05-24 09:07:58
【问题描述】:
我在隐含的 scala 顺序中有一些问题,有人可以帮助我吗?
下面是一些类的定义,我想做的是通过它的“流行度”来比较Leaf和Node。
class Tree
case class EmptyTree() extends Tree
case class Leaf(label: String, popularity: Double) extends Tree
case class Node(popularity: Double, left: Tree, right: Tree) extends Tree
例如:
val a = Leaf("a",10)
val b = Leaf("b",20)
val c = Node(30,a,b)
如果我们想通过 a 和 b 的受欢迎程度来比较它,通过添加隐式转换很容易做到,就像这样:
implicit val leavesOrder = new Ordering[Leaf] {
override def compare(x: Leaf, y: Leaf) =
implicitly[Ordering[Double]].compare(x.popularity, y.popularity)
}
但是如果我想通过 a 和 c 的受欢迎程度来比较它,我对此感到困惑并且不知道如何添加隐式转换?
有人可以帮我吗?
【问题讨论】:
-
你的问题有点含糊。您的标题谈到了隐式顺序,但您似乎正在寻找隐式转换?
-
你可以创建一个
new Ordering[Tree] -
对不起,我会修改瓷砖。@YuvalItzchakov
-
你能详细描述一下吗?@LukaJacobowitz
-
当然,请看下面我的回答:)