参数类型'T.Type'不符合预期类型'Comparable'

Bha*_*gav 3 generics swift

我试图在swift中创建一个小类但是获取以下错误参数类型T.Type不符合预期的类型Comparable

有人可以帮忙吗?

struct BST<T: Comparable> {
  let root: Node<T>?
  var count = 0

  init<T:Comparable>(data: T) {
    self.root = Node(data  : T) //Error Occurs in this line
  }
}//end class BST
Run Code Online (Sandbox Code Playgroud)

这是Node课程代码.

class Node<T: Comparable> {
  let data: T
  var left: Node?
  var right: Node?

  init(data: T) {
    self.data = data
  } //end init

} //end class node

func == <T> (lhs: Node<T>, rhs: Node<T>) -> Bool {
  return lhs.data == rhs.data
} //end ==

func < <T> (lhs: Node<T>, rhs: Node<T>) -> Bool {
  if(rhs.data > lhs.data) {
    return true
  }
  return false
} //end fun <
Run Code Online (Sandbox Code Playgroud)

Muk*_*esh 6

您需要传入data初始化程序T.而且也没有必要初始化泛型.

更改您的代码:

struct BST<T: Comparable> {
    let root: Node<T>?
    var count = 0

    init(data: T) {
        self.root = Node(data: data)
    }

}//end class BST
Run Code Online (Sandbox Code Playgroud)