gpt4 book ai didi

swift - 有条件的预期表达

转载 作者:行者123 更新时间:2023-11-28 11:37:05 24 4
gpt4 key购买 nike

我编写了以下函数,但在 guard 语句中出现以下错误。

expected expression in conditional

func containsNearbyDuplicate(_ nums: [Int], _ k: Int) -> Bool {

// form a dictionary key is the number, value is the index
var numDict = [Int : Int]()
for (i,num) in nums.enumerated()
{
guard let index = numDict[num] , where i - index <= k else
{
numDict [num] = i
continue
}
return true
}

return false

}

最佳答案

where 关键字将另一个表达式添加到实际 guard 语句的第一个表达式。相反,您可以用逗号分隔两个表达式并删除 where 关键字。

这是为什么?

在 Swift 中,您可以在一个 ifguard 语句中枚举多个用逗号分隔的表达式,如下所示:

if a == b, c == d {}
guard a == b, c == d else {}

这类似于 && 运算符。不同之处在于逗号版本允许展开可选值,如下所示:

if let nonOptional = optional, let anotherNonOptional = anotherOptional {}
guard let nonOptional = optional, let anotherNonOptional = anotherOptional else {}

为什么 Internet 会显示 ifguardwhere 一起使用的代码示例?

那是因为在旧的 Swift 版本中,可以将 whereifguard 一起使用。但后来这被删除了,因为 where 是为了将表达式添加到非表达式语句,如 for-in 或作为 class 的约束和 struct 定义。

关于swift - 有条件的预期表达,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54835634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com