使用通用协议调用函数时遇到问题。我定义了一个函数:
// Class function
func insertNumbers<I: IteratorProtocol>(_ iterator: I) where I.Element == Int {
var values = iterator
while let value = values.next() {
self.db.append(value)
}
}
用法:
let values = [1, 2, 3]
let iterator = values.makeIterator()
db.insertNumbers(iterator)
但是,当我尝试使用此功能时,Xcode对我大喊:
Cannot invoke ‘insertNumbers’ with argument list of type ‘(iterator: IndexingIterator<[Int]>'
我认为makeIterator()
的返回值符合IteratorProtocol
和IteratorProtocol.Element == Int
。我在做什么错了?