我在工作中有一个小小的争论:在运行它的项目之前快速计算数组的大小是一个好习惯吗?什么是更好的代码实践:
选项 A:
func setAllToFalse() {
for (var i = 0; i < mKeyboardTypesArray.count; i++ ) {
self.mKeyboardTypesArray[i] = false
}
}
或 选项 B:
func setAllToFalse() {
let typesCount = mKeyboardTypesArray.count
for (var i = 0; i < typesCount; i++ ) {
self.mKeyboardTypesArray[i] = false
}
}
当然,如果我在循环期间不更改数组。
我确实查看了文档,其中说明了这一点:
最佳答案
在 Swift 中表达这一点的惯用方式是:
func setAllToFalse() {
mKeyboardTypesArray = mKeyboardTypesArray.map {_ in false}
}
这样,就没有什么可评估的,也没有什么可计算的。
事实上,这将是一个很好的 Array 方法:
extension Array {
mutating func setAllTo(newValue:T) {
self = self.map {_ in newValue}
}
}
现在你可以说:
mKeyboardTypesArray.setAllTo(false)
或者,您可以这样做(这涉及采用
count
,但只有一次):mKeyboardTypesArray = Array(count:mKeyboardTypesArray.count, repeatedValue:false)