0 - Kotlin Control structures 

Control structure The control structures are similar to those of java (if, for, while, switch, ...), except that most Kotlin structures are expressions, and therefore their result can be assigned to variables, such as as we saw in the previous section; but also, the equivalent of the switch structure in Kotlin is much simpler to use and much more powerful.

1 - The while statement 

The while (or do ... while) statement in Kotlin, just like in Java, does not return an expression. It is also used as in Java: nothing new.

var i = 0
while (i < 7) {
  i + = 1
  println (i)

var j = 0
do {
   j + = 1
   println (j)
} while (j < 7)

The keywords break and continue work as in Java.

2 - For statement 

The for statement is used, as known in Java (initialization / condition / update with a block of instructions) is strictly prohibited in Kotlin. Indeed, you can only use the for loop on "iterable" objects: traditionally ranges or certain types of collections. By "iterable" I simply want to talk about types where we can get the different values ​​of a variable of this type by successive calls to the extraction method (let's call it next() to better illustrate). What can for example give:

// i do not exist in this scope
for (i in 0..10) println(i)

Note here that it is not necessary to use the key word val, nor var, in order to declare the variable i: whether it already exists or not, it is important not to use them. Another example with a simple table:

val myArray = arrayOf(7,13,17,19,23,29)
for (first in myArray) {
    println ("$ first is a prime number")

Also note that I can break free from braces if I need only a single expression for the for loop (which is possible in this second example). Finally, if you want to browse a table while preserving the values ​​of the different indexes, you can use the withIndex () method but with a somewhat special syntax for index and value variables:

val myArray = arrayOf(7,13,17,19,23,29)
for ((index, value) in myArray.withIndex ()) {
   println ("$ index: $ value")


The withIndex() method returns a pair where the first value is the index, so you must package the index and value variables in parentheses in order to proceed with the deconstruction mechanism. But nothing prevents us from proceeding in two stages:

val myArray = arrayOf(7,13,17,19,23,29)
for (tupleCurrent in myArray.withIndex ()) {
    val index = tupleCurrent.component1 ()
    val value = tupleCurrent.component2 ()
    println ("$ index: $ value")
Younes Derfoufi

Leave a Reply