我正在尝试使用for循环遍历优先级队列
测试用例就像这样
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 index >= items.count ? nil : items[index++]
给出以下错误
我没有明确声明类型Int8
,Int16
或Int32
答案 0 :(得分:1)
您的属性名为intex
(请注意拼写错误),因此函数中的index
指的是一个恰好是名为index
的函数的其他符号。