Учебники

Котлин — Контроль потока

В предыдущей главе мы узнали о различных типах типов данных, доступных в системе Kotlin. В этой главе мы обсудим различные типы механизмов потока управления, доступных в Kotlin.

Если еще

Kotlin — это функциональный язык, поэтому, как и любой функциональный язык в Kotlin, «если» — это выражение, это не ключевое слово. Выражение «если» будет возвращать значение всякий раз, когда это необходимо. Как и в других языках программирования, блок «if-else» используется в качестве начального оператора условной проверки. В следующем примере мы сравним две переменные и предоставим требуемый результат соответственно.

Live Demo

fun main(args: Array<String>) {
   val a:Int = 5
   val b:Int = 2
   var max: Int
   
   if (a > b) {
      max = a
   } else {
      max = b
   }
   print("Maximum of a or b is " +max)
 
   // As expression 
   // val max = if (a > b) a else b
}

Приведенный выше фрагмент кода приводит к следующему выводу в браузере. Наш пример также содержит еще одну строку кода, которая показывает, как использовать оператор «If» в качестве выражения.

Maximum of a or b is 5

Использование Когда

Если вы знакомы с другими языками программирования, возможно, вы слышали о выражении switch switch, которое в основном является условным оператором, когда к определенной переменной можно применить несколько условий. Оператор «когда» сопоставляет значение переменной с условиями ветвления. Если он удовлетворяет условию ветвления, он выполнит инструкцию внутри этой области. В следующем примере мы узнаем больше о «когда» в Kotlin.

Live Demo

fun main(args: Array<String>) {
   val x:Int = 5
   when (x) {
      1 -> print("x = = 1")
      2 -> print("x = = 2")
      
      else -> { // Note the block
         print("x is neither 1 nor 2")
      }
   }
}

Приведенный выше фрагмент кода приводит к следующему выводу в браузере.

x is neither 1 nor 2

В приведенном выше примере компилятор Kotlin сопоставляет значение x с заданными ветвями. Если он не соответствует ни одной из ветвей, он выполнит остальную часть. Практически, когда эквивалентно множественному блоку if. Kotlin предоставляет разработчику еще одну гибкость, поскольку разработчик может предоставить несколько проверок в одной строке, указав «,» внутри проверок. Давайте изменим приведенный выше пример следующим образом.

Live Demo

fun main(args: Array<String>) {
   val x:Int = 5
   when (x) {
      1,2 -> print(" Value of X either 1,2")
      
      else -> { // Note the block
         print("x is neither 1 nor 2")
      }
   }
}

Запустите то же самое в браузере, который выдаст следующий вывод в браузере.

x is neither 1 nor 2

Для петли

Цикл — это такое изобретение, которое обеспечивает гибкость для перебора любого типа структуры данных. Как и другие языки программирования, Kotlin также предоставляет много видов методологий Looping, однако среди них «For» является наиболее успешным. Реализация и использование цикла For концептуально аналогичны циклу Java for. В следующем примере показано, как мы можем использовать то же самое в реальных примерах.

Live Demo

fun main(args: Array<String>) {
   val items = listOf(1, 2, 3, 4)
   for (i in items) println("values of the array"+i)
}

В приведенном выше фрагменте кода мы объявили один список с именем «items» и, используя цикл for, выполняем итерацию по этому определенному списку и печатаем его значение в браузере. Ниже приводится вывод.

values of the array1
values of the array2
values of the array3
values of the array4

Ниже приведен еще один пример кода, где мы используем библиотечную функцию, чтобы сделать нашу разработку проще, чем когда-либо прежде.

Live Demo

fun main(args: Array<String>) {
   val items = listOf(1, 22, 83, 4)
   
   for ((index, value) in items.withIndex()) {
      println("the element at $index is $value")
   }
}

Как только мы скомпилируем и выполним вышеуказанный фрагмент кода в нашем коде, он выдаст следующий вывод в браузере.

the element at 0 is 1
the element at 1 is 22
the element at 2 is 83
the element at 3 is 4

В то время как Loop и Do-While Loop

Пока и Do-While работают точно так же, как и в других языках программирования. Единственное различие между этими двумя циклами состоит в том, что в случае цикла Do-while условие будет проверено в конце цикла. В следующем примере показано использование цикла While .

Live Demo

fun main(args: Array<String>) {
   var x:Int = 0
   println("Example of While Loop--")
   
   while(x< = 10) {
      println(x)
      x++
   } 
}

Приведенный выше фрагмент кода приводит к следующему выводу в браузере.

Example of While Loop--
0
1
2
3
4
5
6
7
8
9
10

Kotlin также имеет еще один цикл, называемый циклом Do-While, в котором тело цикла будет выполнено один раз, только тогда условие будет проверено. В следующем примере показано использование цикла Do-while .

Live Demo

fun main(args: Array<String>) {
   var x:Int = 0
   do {
      x = x + 10
      println("I am inside Do block---"+x)
   } while(x <= 50)
}

Приведенный выше фрагмент кода приводит к следующему выводу в браузере. В приведенном выше коде компилятор Kotlin выполнит блок DO, а затем перейдет к проверке состояния в блоке while.

I am inside Do block---10
I am inside Do block---20
I am inside Do block---30
I am inside Do block---40
I am inside Do block---50
I am inside Do block---60

Использование Return, Break, Continue

Если вы знакомы с любым языком программирования, вы должны иметь представление о различных ключевых словах, которые помогут нам реализовать хороший поток управления в приложении. Ниже приведены различные ключевые слова, которые можно использовать для управления циклами или любыми другими типами потока управления.

Return — Return — это ключевое слово, которое возвращает значение вызывающей функции из вызываемой функции. В следующем примере мы реализуем этот сценарий, используя нашу кодлинговую площадку Kotlin.

Live Demo

fun main(args: Array<String>) {
   var x:Int = 10
   println("The value of X is--"+doubleMe(x))
}
fun doubleMe(x:Int):Int {
   return 2*x;
}

В приведенном выше фрагменте кода мы вызываем другую функцию и умножаем ввод на 2 и возвращаем результирующее значение вызываемой функции, которая является нашей основной функцией. Kotlin определяет функцию другим способом, который мы рассмотрим в следующей главе. Пока достаточно понять, что приведенный выше код сгенерирует следующий вывод в браузере.

The value of X is--20

Продолжить и разорвать — Продолжить и разорвать — самая важная часть логической проблемы. Ключевое слово «break» завершает поток контроллера, если какое-либо условие не выполнено, а «continue» делает обратное. Вся эта операция происходит с немедленной видимостью. Kotlin умнее других языков программирования, где разработчик может применять более одной метки в качестве видимости. Следующий фрагмент кода показывает, как мы реализуем этот ярлык в Kotlin.

Live Demo

fun main(args: Array<String>) {
   println("Example of Break and Continue")
   myLabel@ for(x in 1..10) { // appling the custom label
      if(x = = 5) {
         println("I am inside if block with value"+x+"\n-- hence it will close the operation")
         break@myLabel //specifing the label
      } else {
         println("I am inside else block with value"+x)
         continue@myLabel
      }
   }
}

Приведенный выше фрагмент кода приводит к следующему выводу в браузере.

Example of Break and Continue
I am inside else block with value1
I am inside else block with value2
I am inside else block with value3
I am inside else block with value4
I am inside if block with value5
-- hence it will close the operation

Как вы можете видеть, контроллер продолжает цикл до тех пор, пока значение x не станет равным 5. Как только значение x достигнет 5, он начнет выполнять блок if и, как только будет достигнут оператор break, весь поток управления завершит программу выполнение.