【发布时间】:2016-06-16 03:20:11
【问题描述】:
我想要做的是,有一个数组变量,每当它被调用时都会被初始化。为此,我在声明它时使用了lazy 关键字。
但是,我有一个明确的方法,我想清除数组的内容(以恒定的时间复杂度),为此我对数组执行 nil。这给了我一个错误:Cannot assign a value of type NilLiteralConvertible to a value of type [Int]。我该如何解决?
class Array
{
lazy var elementsInArray = [Int]()
func add(element: Int) {
elementsInArray.append(element)
}
func clear() {
elementsInArray = nil
}
}
【问题讨论】:
-
您确实意识到,您的数组不是可选的,所以它不能为 nil 对吧?
-
另外,只需使用 removeAll() 函数...正是出于这个原因(对性能的影响绝对可以忽略不计,在大多数情况下甚至不值得考虑)。跨度>
-
如果您要进行微性能,请考虑将数组设为可选可能还会增加每次访问它的开销。
-
@TheCodingArt 性能要求很高,无法协商
-
@NikitaP 我建议您在 XCTest 框架中运行基准测试以测试时间和性能。但是您的问题是您只需要将数组转换为可选数组。