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.