Patterns with other Keywords
The Swift documentation points out, that not all patterns can be used
with the if, for or the guard statement. However, the docs seem to
be outdated. All 7 patterns work for all three keywords.
As a shorter example, see the Value Binding, Tuple, and Type Casting pattern used for all three keywords in one example:
// This is just a collection of keywords that compiles. This code makes no sense
func valueTupleType(a: (Int, Any)) -> Bool {
// guard case Example
guard case let (x, _ as String) = a else { return false}
print(x)
// for case example
for case let (a, _ as String) in [a] {
print(a)
}
// if case example
if case let (x, _ as String) = a {
print(\"if\", x)
}
// switch case example
switch a {
case let (a, _ as String):
print(a)
return true
default: return false
}
}
With this in mind, we will have a short look at each of those keywords in detail.
