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

### Declarations

Returns a partial range up to, but not including, its upper bound.

Use the prefix half-open range operator (prefix `..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

You can use this type of partial range of a collection's indices to represent the range from the start of the collection up to, but not including, the partial range's upper bound.

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`Comparable`

Returns a partial range up to, but not including, its upper bound.

Use the prefix half-open range operator (prefix `..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

You can use this type of partial range of a collection's indices to represent the range from the start of the collection up to, but not including, the partial range's upper bound.

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`BinaryFloatingPoint`

, `Comparable`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`FixedWidthInteger`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`FixedWidthInteger`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`FixedWidthInteger`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`FixedWidthInteger`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`FixedWidthInteger`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`Comparable`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`StringProtocol`

, `Comparable`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`FixedWidthInteger`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`FixedWidthInteger`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`FixedWidthInteger`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`FixedWidthInteger`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`FixedWidthInteger`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`Comparable`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`Strideable`

, `Comparable`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`Strideable`

, `Comparable`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`Strideable`

, `Comparable`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`Strideable`

, `Comparable`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`Comparable`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`Comparable`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`Comparable`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`Comparable`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`Comparable`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`Comparable`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`Comparable`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`Comparable`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`Comparable`

Returns a partial range up to, but not including, its upper bound.

`..<`

) to create a
partial range of any type that conforms to the `Comparable`

protocol.
This example creates a `PartialRangeUpTo<Double>`

instance that includes
any value less than `5.0`

.

```
let upToFive = ..<5.0
upToFive.contains(3.14) // true
upToFive.contains(6.28) // false
upToFive.contains(5.0) // false
```

```
let numbers = [10, 20, 30, 40, 50, 60, 70]
print(numbers[..<3])
// Prints "[10, 20, 30]"
```

** maximum:** The upper bound for the range.

#### Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

#### Declared In

`Comparable`

Returns a partial range up to, but not including, its upper bound.

Use the prefix half-open range operator (prefix

`..<`

) to create a partial range of any type that conforms to the`Comparable`

protocol. This example creates a`PartialRangeUpTo<Double>`

instance that includes any value less than`5.0`

.You can use this type of partial range of a collection's indices to represent the range from the start of the collection up to, but not including, the partial range's upper bound.

The upper bound for the range.`maximum`

:## Declaration

`prefix func ..<(maximum: Self) -> PartialRangeUpTo<Self>`

## Declared In

`Strideable`

,`Comparable`