File tree Expand file tree Collapse file tree 1 file changed +29
-1
lines changed Expand file tree Collapse file tree 1 file changed +29
-1
lines changed Original file line number Diff line number Diff line change @@ -96,7 +96,35 @@ extension RangeExpression {
96
96
@inlinable
97
97
public static func ~= ( pattern: Self , value: Bound ) -> Bool {
98
98
return pattern. contains ( value)
99
- }
99
+ }
100
+ }
101
+
102
+ extension Range {
103
+ /// Returns a Boolean value indicating whether a value is included in a
104
+ /// range.
105
+ ///
106
+ /// You can use the pattern-matching operator (`~=`) to test whether a value
107
+ /// is included in a range. The pattern-matching operator is used
108
+ /// internally in `case` statements for pattern matching. The following
109
+ /// example uses the `~=` operator to test whether an integer is included in
110
+ /// a range of single-digit numbers:
111
+ ///
112
+ /// let chosenNumber = 3
113
+ /// if 0..<10 ~= chosenNumber {
114
+ /// print("\(chosenNumber) is a single digit.")
115
+ /// }
116
+ /// // Prints "3 is a single digit."
117
+ ///
118
+ /// - Parameters:
119
+ /// - pattern: A range.
120
+ /// - bound: A value to match against `pattern`.
121
+ @_transparent
122
+ public static func ~= ( pattern: Self , value: Bound ) -> Bool {
123
+ // Note: `Range.~=` is used particularly frequently to implement bounds
124
+ // checks. This more specific variant of the generic `=~` is intended to
125
+ // help improve unoptimized performance of these cases.
126
+ pattern. contains ( value)
127
+ }
100
128
}
101
129
102
130
/// A half-open interval from a lower bound up to, but not including, an upper
You can’t perform that action at this time.
0 commit comments