Swift Tutorial Swift References

Swift - Range Operators



Swift provides several range operators, which can be used to create a range of values. These operators can be used in the following ways:

  • Closed Range Operator
  • Half-Open Range Operator
  • One-Sided Ranges

Closed Range Operator

The closed range operator (a...b) defines a range that runs from a to b, and includes the values a and b. The value of a must not be greater than b. The closed range operator is useful when iterating over a range in which the user want all of the values to be used.

Example:

In the example below, a for-in loop is used to iterate over a closed range to print all elements of the range.

//iterating over a closed range to
//print all elements in the range
print("iterating over closed range")
for i in (1...6) {
  print("i = \(i)")
}

The output of the above code will be:

iterating over closed range
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6

Half-Open Range Operator

The closed range operator (a..<b) defines a range that runs from a to b, but does not include b. The value of a must not be greater than b. The half-open range operator is useful when iterating over a zero-based lists such as arrays, where it is useful to count up to (but not including) the length of the list.

Example:

In the example below, a for-in loop is used to iterate over a half-open range to print all elements of the range. After that it is also used to access all elements of an array.

//iterating over a half-open range to
//print all elements in the range
print("iterating over half-open range")
for i in (1..<6) {
  print("i = \(i)")
}

var MyArray = ["Mon", "Tue", "Wed", "Thu", "Fri"]
//iterating over MyArray to print 
//of its elements
print("\nMyArray contains:")
for i in (0..<MyArray.count) {
  print(MyArray[i])
}

The output of the above code will be:

iterating over half-open range
i = 1
i = 2
i = 3
i = 4
i = 5

MyArray contains:
Mon
Tue
Wed
Thu
Fri

One-Sided Ranges

The closed range operator has an alternative form for ranges that continue as far as possible in one direction, for example: a range that includes all the elements of an array from index 2 to the end of the array. In these cases, the value from one side of the range operator cab be omitted. This kind of range is called a one-sided range.

Example:

In the example below, a one-sided range is used to access elements of an array.

var MyArray = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]

//using one-sided range to access elements
//of MyArray with index in range [0, 4]
print("\nElements are:")
for i in MyArray[...4] {
  print(i)
}

//using one-sided range to access elements
//of MyArray with index in range [2, 6]
print("\nElements are:")
for i in MyArray[2...] {
  print(i)
}

The output of the above code will be:

Elements are:
Mon
Tue
Wed
Thu
Fri

Elements are:
Wed
Thu
Fri
Sat
Sun

Example:

Consider one more example to understand one-sided range concept.

var MyArray = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]

//using one-sided range to access elements
//of MyArray with index in range [0, 4]
//mixed with half-open range
print("\nElements are:")
for i in MyArray[..<5] {
  print(i)
}

print()

//using one-sided range without subscripts
var range = ...5
print(range.contains(10))
print(range.contains(3))
print(range.contains(-5))

The output of the above code will be:

Elements are:
Mon
Tue
Wed
Thu
Fri

false
true
true

❮ Swift - Operators