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