对于下面的代码,我不得到任何编译器错误,表明您需要指定Node
的泛型类型(对于leftChild& rightChild)
class Node<T: Comparable>{
var leftChild: Node? // WHY NO ERRORS?!
var rightChild: Node? // WHY NO ERRORS?
var value: T
init(value: T){
self.value = value
}
func addleft(node: Node){
leftChild = node
}
func addright(node: Node){
rightChild = node
}
}
但是对于下面的结构,如果我没有指定泛型类型,我会收到错误。
struct LinkedList{
var head: Node? // ERROR!
}
错误:对泛型类型'Node'的引用需要&lt; ...&gt;
中的参数
这是可以理解的。我知道我需要做类似的事情:
struct LinkedList<T:Comparable>{
var head: Node<T> // NO Error!
}
那么为什么leftChild: Node?
行没有抛出任何错误?!它是如何知道它的通用类型的?为什么没有必要这样写?
var leftChild: Node<T>?
var rightChild: Node<T>?