Separating multiple if conditions with commas in Swift

后端 未结 6 1540
轮回少年
轮回少年 2020-11-30 13:56

We already know multiple optional bindings can be used in a single if/guard statement by separating them with commas, but not with && e.g.



        
6条回答
  •  刺人心
    刺人心 (楼主)
    2020-11-30 14:06

    When pattern matching a associated value in a switch, it matters when using a , or &&. One compiles, the other won't (Swift 5.1). This compiles (&&):

    enum SomeEnum {
        case integer(Int)
    }
    
    func process(someEnum: SomeEnum) {
        switch someEnum {
        // Compiles
        case .integer(let integer) where integer > 10 && integer < 10:
            print("hi")
        default:
            fatalError()
        }
    }
    

    This won't (,):

    enum SomeEnum {
        case integer(Int)
    }
    
    func process(someEnum: SomeEnum) {
        switch someEnum {
        // Compiles
        case .integer(let integer) where integer > 10, integer < 10:
            print("hi")
        default:
            fatalError()
        }
    }
    

提交回复
热议问题