为什么我需要“!”在使用 guard 语句时使用数组参数?

Why do I need "!" to use an array parameter while using a guard statement?

目前专注于结构和算法,我遇到了这个。

import Foundation

let numbers = [1, 3, 56, 66, 68, 80, 99, 105, 450]

func naiveContains(_ value: Int, in array: [Int]) -> Bool {
    guard !array.isEmpty else { return false }
    let midleIndex = array.count / 2
    
    if value <= array[midleIndex] {
        for index in 0...midleIndex {
            if array[index] == value {
                return true
            }
        }
    } else {
        for index in midleIndex..<array.count {
            if array[index] == value {
                return true
            }
        }
    }
    return false
}

我的问题的准确位置是守卫声明:

guard !array.isEmpty else { return false }

我不确定为什么 guard 语句需要,!在 !array.isEmpty

我只需要帮助理解为什么感叹号需要放在数组参数之前。

谢谢!

算法要求数组不为空。 !意思不是。所以 !array.isEmpty 表示不为空。

guard ...的意思和if not ...一样 所以 guard !array.isEmpty 表示 if not not array is empty,这又等同于 if array.isEmpty {return false}

我看得出来很混乱!