## Operator: ..<

``` operator ..< { associativity precedence }```

### Declarations

func ..< <Bound where Bound : Comparable, Bound : _Strideable, Bound.Stride : SignedInteger>(_: Bound, maximum: Bound)

Returns a countable half-open range that contains its lower bound but not its upper bound.

Use the half-open range operator (`..<`) to create a range of any type that conforms to the `Strideable` protocol with an associated integer `Stride` type, such as any of the standard library's integer types. This example creates a `CountableRange<Int>` from zero up to, but not including, 5.

``````let upToFive = 0..<5
print(upToFive.contains(3))         // Prints "true"
print(upToFive.contains(5))         // Prints "false"``````

You can use sequence or collection methods on the `upToFive` countable range.

``````print(upToFive.count)               // Prints "5"
print(upToFive.last)                // Prints "4"``````

Parameters: minimum: The lower bound for the range. maximum: The upper bound for the range.

#### Declaration

`func ..<<Bound where Bound : Comparable, Bound : _Strideable, Bound.Stride : SignedInteger>(minimum: Bound, maximum: Bound) -> CountableRange<Bound>`
func ..< <Bound where Bound : Comparable>(_: Bound, maximum: Bound)

Returns a half-open range that contains its lower bound but not its upper bound.

Use the half-open range operator (`..<`) to create a range of any type that conforms to the `Comparable` protocol. This example creates a `Range<Double>` from zero up to, but not including, 5.0.

``````let lessThanFive = 0.0..<5.0
print(lessThanFive.contains(3.14))  // Prints "true"
print(lessThanFive.contains(5.0))   // Prints "false"``````

Parameters: minimum: The lower bound for the range. maximum: The upper bound for the range.

#### Declaration

`func ..<<Bound where Bound : Comparable>(minimum: Bound, maximum: Bound) -> Range<Bound>`