我在工作中有一个小小的争论:在运行它的项目之前快速计算数组的大小是一个好习惯吗?什么是更好的代码实践:

选项 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)

10-08 07:57