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