Enums and Pattern Matching
Tuple Patterns
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.