首页 > 解决方案 > 参数类型“T.Type”不符合预期类型“Comparable”

问题描述

我正在尝试快速创建一个小类,但得到以下错误参数类型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

这是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 <

标签: swiftgenerics

解决方案


您需要传入data初始化程序 not T。而且也没有必要使初始化通用。

更改您的代码:

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

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

}//end class BST

推荐阅读