Switch patterns can match tuple positions at the same time.

Match a pair of values

tuple_patterns.swift
let x = 
let y = 
let point = (x, y)
var label = ""

switch point {
case (0, 0):
    label = "origin"
case (let column, 0):
    label = "x-axis \(column)"
case (0, let row):
    label = "y-axis \(row)"
case (let column, let row) where column == row:
    label = "diagonal \(column)"
default:
    label = "grid \(x),\(y)"
}

print("point=\(x),\(y)")
print(label)
let x = 
let y = 
let point = (x, y)
var label = ""

switch point {
case (0, 0):
    label = "origin"
case (let column, 0):
    label = "x-axis \(column)"
case (0, let row):
    label = "y-axis \(row)"
case (let column, let row) where column == row:
    label = "diagonal \(column)"
default:
    label = "grid \(x),\(y)"
}

print("point=\(x),\(y)")
print(label)
let x = 
let y = 
let point = (x, y)
var label = ""

switch point {
case (0, 0):
    label = "origin"
case (let column, 0):
    label = "x-axis \(column)"
case (0, let row):
    label = "y-axis \(row)"
case (let column, let row) where column == row:
    label = "diagonal \(column)"
default:
    label = "grid \(x),\(y)"
}

print("point=\(x),\(y)")
print(label)
let x = 
let y = 
let point = (x, y)
var label = ""

switch point {
case (0, 0):
    label = "origin"
case (let column, 0):
    label = "x-axis \(column)"
case (0, let row):
    label = "y-axis \(row)"
case (let column, let row) where column == row:
    label = "diagonal \(column)"
default:
    label = "grid \(x),\(y)"
}

print("point=\(x),\(y)")
print(label)
let x = 
let y = 
let point = (x, y)
var label = ""

switch point {
case (0, 0):
    label = "origin"
case (let column, 0):
    label = "x-axis \(column)"
case (0, let row):
    label = "y-axis \(row)"
case (let column, let row) where column == row:
    label = "diagonal \(column)"
default:
    label = "grid \(x),\(y)"
}

print("point=\(x),\(y)")
print(label)
let x = 
let y = 
let point = (x, y)
var label = ""

switch point {
case (0, 0):
    label = "origin"
case (let column, 0):
    label = "x-axis \(column)"
case (0, let row):
    label = "y-axis \(row)"
case (let column, let row) where column == row:
    label = "diagonal \(column)"
default:
    label = "grid \(x),\(y)"
}

print("point=\(x),\(y)")
print(label)
let x = 
let y = 
let point = (x, y)
var label = ""

switch point {
case (0, 0):
    label = "origin"
case (let column, 0):
    label = "x-axis \(column)"
case (0, let row):
    label = "y-axis \(row)"
case (let column, let row) where column == row:
    label = "diagonal \(column)"
default:
    label = "grid \(x),\(y)"
}

print("point=\(x),\(y)")
print(label)
let x = 
let y = 
let point = (x, y)
var label = ""

switch point {
case (0, 0):
    label = "origin"
case (let column, 0):
    label = "x-axis \(column)"
case (0, let row):
    label = "y-axis \(row)"
case (let column, let row) where column == row:
    label = "diagonal \(column)"
default:
    label = "grid \(x),\(y)"
}

print("point=\(x),\(y)")
print(label)
let x = 
let y = 
let point = (x, y)
var label = ""

switch point {
case (0, 0):
    label = "origin"
case (let column, 0):
    label = "x-axis \(column)"
case (0, let row):
    label = "y-axis \(row)"
case (let column, let row) where column == row:
    label = "diagonal \(column)"
default:
    label = "grid \(x),\(y)"
}

print("point=\(x),\(y)")
print(label)
tuple pattern Tuple patterns let one switch inspect several related values together.