Range
A half-open interval from a lower bound up to, but not including, an upper bound.
Declaration
@frozen struct Range<Bound> where Bound : ComparableOverview
You create a Range instance by using the half-open range operator (..<).
let underFive = 0.0..<5.0You can use a Range instance to quickly check if a value is contained in a particular range of values. For example:
underFive.contains(3.14)
// true
underFive.contains(6.28)
// false
underFive.contains(5.0)
// falseRange instances can represent an empty interval, unlike ClosedRange.
let empty = 0.0..<0.0
empty.contains(0.0)
// false
empty.isEmpty
// trueUsing a Range as a Collection of Consecutive Values
When a range uses integers as its lower and upper bounds, or any other type that conforms to the Strideable protocol with an integer stride, you can use that range in a for-in loop or with any sequence or collection method. The elements of the range are the consecutive values from its lower bound up to, but not including, its upper bound.
for n in 3..<5 {
print(n)
}
// Prints "3"
// Prints "4"Because floating-point types such as Float and Double are their own Stride types, they cannot be used as the bounds of a countable range. If you need to iterate over consecutive floating-point values, see the stride(from:to:by:) function.
Topics
Creating a Range
Converting Ranges
Inspecting a Range
Checking for Containment
Clamping a Range
Working with Foundation Ranges
Comparing Ranges
Manipulating Indices
Describing a Range
Encoding and Decoding a Range
Infrequently Used Functionality
Initializers
Instance Methods
contains(_:)contains(_:)contains(_:)formatted()formatted(_:)formatted(date:time:)isValid(within:)isValid(within:)
Type Methods
Default Implementations
BidirectionalCollection ImplementationsCollection ImplementationsCustomDebugStringConvertible ImplementationsCustomReflectable ImplementationsCustomStringConvertible ImplementationsDecodable ImplementationsEncodable ImplementationsEquatable ImplementationsHashable ImplementationsRangeExpression ImplementationsSequence Implementations