微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swift“h”必须绑定在每个模式错误中 – 切换问题

switch语句中的这个错误的原因是什么?“h必须绑定在每个模式中”?

我基本上试图将h用作小时变量,确保它不是nil(因为小时最初是一个可选值,然后看它是否大于17).我知道我在某个地方做错了什么,但那个讨厌的小’必须在每个模式中绑定’错误是什么?

谢谢

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")
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐