2015-11-27 43 views
4

Xcode抱怨說:「無法指定類型節點的值來鍵入節點< _>?」在第23,24,26,27行(在排隊的條件部分中'節點'到'頂部'和'底部'的分配)。我不知道這意味着什麼,以及爲什麼Xcode中看到了該類型的節點和頂/差異底部無法將節點類型爲<T>的值分配給類型節點<_>?

class Node<T> { 
    var key: T? 
    weak var next: Node<T>? 
    weak var previous: Node<T>? 

    init(key: T, previous: Node? = nil) { 
     self.key = key 
     self.previous = previous 
    } 
} 


class Dequeue<T> { 
    private var count: Int = 0 
    private weak var top: Node<T>? 
    private weak var bottom: Node<T>? 

    func enqueue<T>(val: T) { 
     // if dequeue is empty 
     let node = Node<T>(key: val) 

     if top == nil { 
      self.top = node 
      self.bottom = node 
     } else { 
      self.bottom?.next = node 
      self.bottom = node 
     } 
    } 

} 

回答

6

刪除通用<T>從方法聲明。

class Dequeue<T> { 
    ... 

    func enqueue(val: T) { 
     ... 
    }  
} 

類聲明中的<T>適用於整個類,包括方法體。方法體上明確的<T>引入了一個新的泛型T,它暗示該類的T類型;由於它獨立於全局T,因此編譯器無法確保它們兼容。

相關問題