Путь наивного к мастерству.
✯ Table of content ✯ ★ What are control flows: ★ if-else Expression: ★ When Expression : ★ For Loop : ★ While and do-while Loop : ★THANK YOU★
Что такое потоки управления:
Оператор потока управления использует принятие решений, чтобы определить, следует ли выполнять определенный блок кода, и эти операторы используются для того, чтобы отойти от типичного потока выполнения сверху вниз. В Kotlin мы можем использовать некоторые из операторы потока управления в виде выражений. Оглядываясь назад, операторы потока управления помогают нам выбрать подходящий путь из двух или более вычислительных путей.
В этой статье мы поговорим о следующем потоке управления в kotlin:
if-else
выражениеwhen
выражениеFor
петлиwhile
иdo…while
циклов
если-иначе выражение:
// if - as statement - no return value // else - optional val num1 = 90 if (num1 % 2 == 0) { println("$num1 is even") } else { println("$num1 is odd") } println("------") //output will be //90 is even //------
Приведенный выше фрагмент кода является традиционным примером оператора if-else
, здесь else
также может быть необязательным.
В большинстве языков это практически конец истории в том, что касается if-else
, то есть мы можем выполнить блок кода if
условие выполнено else
выполнить другой блок .
Однако kotlin делает шаг вперед.
// if - as expression - return value // else is mandatory val num2 = 20 val num1 = 10 // ternaray operator - num1 > num2 ? num1 : num2 val max = if ( num1 > num2) num1 else num2 // no ternary operator in Kotlin println("Max: $max")
В Kotlin мы можем использовать if как выражение, чтобы оно возвращало значение. Это все равно, что сказать: «if
num1
is greater
than num2
return num1 else
return число2 ». При использовании if-else
в качестве выражения блок else
необязателен.
Когда выражение:
Kotlin when
выражение очень похоже на оператор switch
control, который можно найти в C или Java с точки зрения основных функций.
Однако kotlin делает шаг вперед.
// when - replacement for switch - case var marks : Any = 30 when(marks){ is String -> println("invalid marks") 100 -> println("EXCELLENT") in 75..99 -> { println("Distinction")} in 65..74 -> println("First class") in 55..64 -> println("Second class") in 35..54 -> println("Third class") !in 20..29 -> println("below Third") else -> { println("None of the branches matched") println("Failed") } }
when
последовательно сопоставляет свой аргумент со всеми своими ветвями до тех пор, пока не будет выполнено какое-либо условие ветвления, если это так, то выполнение передается в ветвь. else
ветвь оценивается, если ни одна из других ветка условия выполняются .
when
может использоваться как выражение или оператор, аналогичныйif-else
when
as выражение значение первой соответствующей ветви становится значением общего выражения.when
as все значения ветвей игнорируются.- Мы также можем использовать
in
и!in
для проверки значения в заданном диапазоне или коллекции. - Точно так же мы все можем проверить, относится ли значение к определенному типу или нет, используя
is
и !is .
Область действия переменной, представленной в теме when, ограничена телом этого when.
Для цикла:
Цикл for
полезен в ситуациях, когда вы хотите просмотреть фиксированный диапазон чисел или каждый элемент в массиве, коллекции или диапазоне.
val ArrayListOfNames = arrayListOf<String>("nameA","nameB","nameC") // mutable //below is the simple syntax to loop over each element of the array for(name in ArrayListOfNames){ print(name) } //The above thing can also be done using a foreach loop mutableArrayListOfNames.forEach { println(it) }
- Для перебора диапазона чисел .
for(x in 0..10){ println(x) } for(x in 0 until 10){ println(x) }
Обратите внимание, что оператор
..
включает конечное число в свой диапазон. Если вы хотите исключить его, вы должны заменить оператор..
наuntil
.
- Использует downTo для изменения диапазона.
for(x in 10 downTo 0 step 2){ println("$x ") } // 10 8 6 4 2 0
- Шаг пользователя для пропуска номера - это диапазон.
for(x in 0 until 10 step 2){ println("$x ") } // 0 2 4 6 8
- Мы можем даже просмотреть индекс и значение массива, используя функцию
withIndex
liberary.
val array = arrayOf("a", "b", "c") for ((index, item) in array.withIndex()) { println("Index $index has item $item") }
Цикл while и do-while:
В циклах while и do-while их блок кода выполняется непрерывно, пока выполняется их условие. Разница между ними видна только во время условного теста:
while
проверяет условие и, если оно выполнено, выполняет блок кода, а затем перепроверяет условиеdo-while
, с другой стороны, сначала выполняет блок кода, а затем проверяет условие. Если условный тест выполнен, цикл повторяется.
Тело
do-while
выполняется хотя бы один раз независимо от условия
//do-while loop var x = 6 do { print("$x ") x++ } while(x <= 5) // o/p - 6 //while val x = 6 while(x<=5){ print("$x ") } // no output since the conditional test fails .
Это все, что касается изучения потоков управления в Kotlin. Мы проверили базовые версии большинства функций
✯ КОНЕЦ
★В следующей статье мы поговорим о функциях в kotlin.