基本方式无效。
std::ifstream
答案 0 :(得分:89)
代码的问题是0 ..< list.count
在循环开始时执行一次,list
仍然包含其所有元素。每次删除一个元素时,list.count
都会递减,但迭代范围不会被修改。你最终读得太过分了。
在Swift 4.1及更高版本中,您可以使用compactMap
来丢弃序列的nil
元素。 compactMap
返回一组非可选值。
let list: [Foo?] = ...
let nonNilElements = list.compactMap { $0 }
在Swift 2中包括4.0,使用flatMap
。 flatMap
做同样的事情:
let list: [Foo?] = ...
let nonNilElements = list.flatMap { $0 }
如果您仍然需要一系列可选项,或者您仍在使用Swift 1,则可以使用filter
删除nil
元素:
list = list.filter { $0 != nil }
答案 1 :(得分:75)
在Swift 2.0中,您可以使用flatMap:
location.onhand
答案 2 :(得分:7)
现在在Swift 4.2中可以使用
openpyxl