Swift 2 – Pattern matching in “if”

All it really means is that if statements now support pattern matching like switch statements already have. For example, the following is now a valid way of using if/else if/else statements to “switch” over the cases of an enum.

enum TestEnum {
    case One
    case Two
    case Three
}

let state = TestEnum.Three

if case .One = state {
    print("1")
} else if case .Two = state {
    print("2")
} else {
    print("3")
}

And the following is now an acceptable way of checking if someInteger is within a given range.

let someInteger = 42
if case 0...100 = someInteger {
    // ...
}

Here are a couple more examples using the optional pattern from The Swift Programming Language

let someOptional: Int? = 42
// Match using an enumeration case pattern
if case .Some(let x) = someOptional {
    print(x)
}

// Match using an optional pattern
if case let x? = someOptional {
    print(x)
}

Leave a Comment