## for-in loop in Swift-4 :

For-in loop is used to iterate over sequence like array, dictionary, string etc. In this example, I will show you use of for-in loop with different examples.Drop a comment if you have any queries.

### For-in loop to iterate over an array :

Using for-in loop, we can iterate through each elements of an array like below :

```
var daysArray = ["SunDay","MonDay","TuesDay","WednesDay","ThursDay","FriDay","SaturDay"]
for day in daysArray{
print (day)
}
```

Output :

```
SunDay
MonDay
TuesDay
WednesDay
ThursDay
FriDay
SaturDay
```

### Iterating over a dictionary using for-in loop :

Dictionary iteration is same as array using for-in loop. We can iterate and access each key-value pairs of a dictionary. But since the items of a dictionary are not ordered, it doesnot gurantee the order in which they will be retrieved.

```
var daysDictionary = [1 : "SunDay",2 : "MonDay",3 : "TuesDay",4 : "WednesDay",5 : "ThursDay",6 : "FriDay",7 : "SaturDay"]
for (id,day) in daysDictionary{
print ("\(id) , \(day)")
}
```

Output :

```
2 , MonDay
4 , WednesDay
5 , ThursDay
6 , FriDay
7 , SaturDay
3 , TuesDay
1 , SunDay
```

### With Numeric ranges - Print Multiplication table :

for-in loop can be used with numeric ranges directly . *1…n* means it will take values from 1 to n (including n). Following example will print the multiplication table for 9 :

```
for count in 1...10 {
print ("9 * \(count) = \(count * 9)")
}
```

Output :

```
9 * 1 = 9
9 * 2 = 18
9 * 3 = 27
9 * 4 = 36
9 * 5 = 45
9 * 6 = 54
9 * 7 = 63
9 * 8 = 72
9 * 9 = 81
9 * 10 = 90
```

In the above example, we are storing the current numeric value in a variable *count*. If the value is not using inside the loop, we can simply write ’_’ instead of any variable name. Below example is to find the factorial of a number and it is illustrating this approach.

```
var fact = 1
var number = 10
var counter = number
for _ in 2...number{
fact *= counter
counter = counter - 1
}
print ("factorial of \(number) is \(fact)")
```

Output :

`factorial of 10 is 3628800`

### Half open range operation in for-in loop :

_Half open range operator _ (a..<b) means that it will run from a to b but will not include b.

```
for i in 1..<10 {
print ("i = \(i)")
}
```

In the above example, it will run from i=1 to i=9 . output is :

```
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9
```

### One-sided ranges operation in for-in loop (Swift-4) :

Closed range operator , *[a…]* starts from ‘a’ and it will continue as far as possible. If we use it on an array, it will continue from ‘a’ to the end of the array .

```
var daysArray = ["SunDay","MonDay","TuesDay","WednesDay","ThursDay","FriDay","SaturDay"]
for day in daysArray[3...]{
print (day)
}
```

Output :

```
WednesDay
ThursDay
FriDay
SaturDay
```

Similarly for […a] and [..<a] :

```
var daysArray = ["SunDay","MonDay","TuesDay","WednesDay","ThursDay","FriDay","SaturDay"]
for day in daysArray[...3]{
print (day)
}
print ("---------")
for day in daysArray[..<3]{
print (day)
}
```

Output :

```
SunDay
MonDay
TuesDay
WednesDay
---------
SunDay
MonDay
TuesDay
```

### Iterate with an interval using for in loop :

We can also iterate with an interval using *stride(from,to,by)* method. ‘from’ means the starting point, ‘to’ means the ending point ( but it will not be considered )and ‘by’ means interval between each step. Example :

```
for number in stride(from: 0, to: 10, by: 2) {
print (number)
}
```

Output :

```
0
2
4
6
8
```

In the above example,10 is not included. If you want to include it , you can use *stride(from,through,by)* method. So, if ‘from’ is 0 and ‘through’ is 10 , 0 to 10 : all numbers will be considered. If we use this for the same above example :

```
for number in stride(from: 0, through: 10, by: 2) {
print (number)
}
```

Output :

```
0
2
4
6
8
10
```

It includes 10.