## 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.