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

时间:2018-05-18 06:29:20

标签: swift generics

我正在尝试在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

以下是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 <

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

self.root = Node(data  : T) //Error Occurs in this line

您正尝试使用类型而不是值来初始化Node

尝试

self.root = Node(data  : data) //Error Occurs in this line