2016-02-25 74 views
0

我試圖使用用於循環遍歷一個優先級隊列二元運算符「> =」不能被應用於類型的操作數「(UnsafePointer <Int8>,Int32)將 - > UnsafeMutablePointer <Int8>」和「INT」

測試用例是這樣

var i = 2 
for item in queue { 
    assert(item == i--) 
} 

我已經延長我原來PriorityQueue這樣

extension PriorityQueue { 
    private func getItemsInPriorityOrder() -> [I] { 
     if !isSorted { 
      isSorted = true 
      queue.sortInPlace{ 
       return ($0 == nil) ? true : 
         ($1 == nil) ? false : 
          $0.priority > $1.priority 
      } 
     } 
     var items: [I] = [] 
     for i in 1..<queue.count { 
      items.append(queue[i].item) 
     } 
     return items 
    } 
} 

而且

extension PriorityQueue: SequenceType { 
    public func generate() -> _PriorityQueueIterator<I> { 
     return _PriorityQueueIterator<I>(items: getItemsInPriorityOrder()) 
    } 
} 

public struct _PriorityQueueIterator <I> : GeneratorType { 
    private let items: [I] 
    private var intex = 0 

    init(items: [I]){ 
     self.items = items 
    } 

    public mutating func next() -> I? { 
     return index >= items.count ? nil : items[index++] // this giving the error 
    } 
} 

我return語句return index >= items.count ? nil : items[index++] 是給下面的錯誤

error message

我沒有顯式聲明任何東西作爲Int8類型,Int16,或者Int32

+0

你應該避開說'index ++'的習慣,因爲這個語言特性將在未來版本的Swift中被刪除。 – matt

回答

1

你的屬性名爲intex (注意錯字),因此該函數中的index指的是發生在是一個名爲index的函數。

+0

非常感謝,這是我的錯誤,xcode應該給出相關的錯誤信息 –

+0

@OmarFaruqe:好的,Xcode實際上在這裏給出了一個正確的錯誤信息。在你的(錯誤的)代碼中,'index'指的是全局函數'public func index(_:UnsafePointer ,_:Int32) - > UnsafeMutablePointer '(你可以看到你是否用命令單擊它)。 Xcode不能*猜測*你有一個錯字。 –

相關問題