3.3 关键字: where 条件约束

where 条件约束

    var eHttpCode:(Int, String) = (404, "Not Found")
    switch eHttpCode
    {
        /// where 约束 eCode在 [200, 300) 时:
        case let (eCode, _) where eCode >= 200 && eCode < 300:
            print("---当eCode在[200, 300)才 输出 --")
        default:
            print("Bad request.")
    }
    let eArrInt = [24, 32, 30, 36, 28, 33]
    
    /// where 约束 eArrInt 中的元素 >= 31 时才遍历输出:
    for eI in eArrInt where eI >= 31
    {
       print("---where 约束 eArrInt 中的元素 >= 31 时才遍历输出: \(eI)--") //32,36,33
    }
    // where 约束 泛型 T类型 必须遵循 Decodable协议:
    func getDecodableResult<T>(eT : T) where T : Decodable
    {
        print(eT)
    }

enum HTTPError : Error
{
    case code(Int)
}


        do
        {
            try requestWithError()
        }
        catch HTTPError.code(let code) where code == 408
        {
            print("Request time out.")
        }
        
        
        func requestWithError() throws
        {
            throw HTTPError.code(400)
        }
    1. where 和 associatedtype 搭配使用:
// where 和 associatedtype 搭配使用:
protocol EProtocolA
{
    associatedtype eA : IteratorProtocol
    associatedtype eB : Sequence where eB.Iterator.Element == eA.Element
    // eB遵循Sequence协议, 且 where 约束 eB中的元素须和eA的元素类型一样;
}
// where 约束 对遵循EProtocolA协议的同时,且遵循Equatable协议 的类型进行扩展:
extension EProtocolA where Self : Equatable
{
    func yeTest()
    {
        print("---where 约束 对遵循EProtocolA协议的同时,且遵循Equatable协议 的类型进行扩展:--")
    }
}
截屏2023-01-24 22.50.41.png
截屏2023-01-24 22.50.57.png
截屏2023-01-24 22.51.12.png
截屏2023-01-24 22.51.14.png
截屏2023-01-24 22.51.27.png
截屏2023-01-24 22.51.41.png
截屏2023-01-24 22.51.47.png
截屏2023-01-24 22.51.57.png
截屏2023-01-24 22.52.05.png
截屏2023-01-24 22.52.13.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 有句话之前我提过,今天还想再说一次。那就是打铁还需自身硬。对于自身能力的严格要求,可以帮助实现我们所有梦寐以求的东...
    苹果上的小豌豆阅读 2,182评论 0 7
  • 作者:Jordan Morgan,原文链接,原文日期:2017-02-11 译者:郑一一;校对:numbbbbb,...
    iOS亮子阅读 656评论 0 1
  • Swift关键字汇总如下: 一: 常见使用频繁的关键字: 1,访问修饰符:在swift中,访问修饰符有五种,分别是...
    物非0人非阅读 3,504评论 2 15
  • exists用法 exists:如果括号内子查询语句返回结果不为空,说明where条件成立,就会执行主SQL语句如...
    攻城狮Chova阅读 589评论 0 0
  • Swift官方文档的词汇结构中, 有非常多的关键字, 它们被用于声明中、语句中、表达式中、类中、模式中, 还有以数...
    小宇宙_fly阅读 805评论 0 3