In Swift, there are two basic kinds of patterns: those that successfully match any kind of value , and those that may fail to match a specified value at runtime. The first kind of pattern is used for destructuring values in simple variable, constant, and optional bindings.