gpt4 book ai didi

Swift "h"must be bound in every pattern 错误 - 开关问题

转载 作者:搜寻专家 更新时间:2023-10-31 08:19:58 26 4
gpt4 key购买 nike

switch语句“h must be bound in every pattern”这个错误的原因是什么?

我主要是尝试将 h 用作 hour 的变量,确保它不是 nil(因为 hour 最初是一个可选值,然后查看它是否大于 17)。我知道我在某个地方做错了,但是那个讨厌的小“h must be bound in every pattern”错误是什么?

let date = NSDate()
let calendar = Calendar.current
let components = calendar.dateComponents([.hour], from: date as Date)
let hour = components.hour


switch hour {
case let h, (h as Int) != nil, h >= 17:
return true
default:
return false
}

最佳答案

你可能需要这样写:

switch hour {
case let h? where h >= 17:
return true
default:
return false

}

或者,按照建议,使用 if 语句:

if let h = hour, h >= 17 {
return true
} else {
return false
}

否则,简单地:

return hour != nil && hour! >= 17

此模式中经常会出现错误消息:

enum MyEnum {
case patternA(Int)
case patternB(Int)
case patternC
}

let me = MyEnum.patternB(30)

switch me {
case .patternA(let h), .patternB(let h), .patternC: //<-
print("A or B with h, or C")
default:
print("this may never happen")
}

关于Swift "h"must be bound in every pattern 错误 - 开关问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41029237/

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