6
我有一个二叉树应该是什么样子的最小定义:型走样下令仿制药在斯卡拉
type Tree[T] = Option[Node[T]]
case class Node[T](left: Tree[T], entry: T, right: Tree[T])
我现在要定义一个二进制搜索树:
type BST[T: Ordering] = Tree[T]
但不能编译。我究竟做错了什么?
我有一个二叉树应该是什么样子的最小定义:型走样下令仿制药在斯卡拉
type Tree[T] = Option[Node[T]]
case class Node[T](left: Tree[T], entry: T, right: Tree[T])
我现在要定义一个二进制搜索树:
type BST[T: Ordering] = Tree[T]
但不能编译。我究竟做错了什么?
你得到的编译错误基本上说上下文边界不能用于类型别名。上下文边界可以在函数或类定义中工作。例如,
class BST[T: Ordering](val tree: Tree[T])
实际上是
class BST[T](val tree: Tree[T])(implicit ordering: Ordering[T])
需要注意的是不同的BST
对象可能有不同的Ordering
s,而这些值必须存储在运行时的速记符号。
为您的使用情况下,最简单的事情可能是把绑定在你心目中的通用功能的情况下,
def f[T: Ordering](t1: Tree[T], t2: Tree[T]) {
import scala.math.Ordering.Implicits._
t1.get.entry < t2.get.entry
}
然后适当Ordering[T]
隐含将以f
通话网站上找到,其中T
类型是已知的。
您的意思是“类BST [T](val tree:Tree [T])(隐式排序:排序[T])的简写符号'” – Faiz 2013-03-28 01:43:50
@Faiz,固定感谢。 – 2013-03-28 01:44:41