Часть 2: Поток управления с Kotlin


Мотивация

Эта статья написана для более опытных разработчиков, которые хотят быстро освоить язык Kotlin для работы или для интересных проектов.

Мы рассмотрим установку, базовый синтаксис и краткое введение в функции в этой статье, которая является частью 2 в длинном цикле.

  • Часть 1 : Начало работы с Kotlin
  • Часть 2 : Поток управления в Kotlin
  • Часть 3 : Циклы и исключения в Kotlin (скоро выйдет)

Примечание: В этой статье я использую цикл For-Loop, чтобы смоделировать выборку из конечной последовательности от 0 до 10, но синтаксис относительно схож с другими языками.

Поток управления в Kotlin

В Kotlin у нас есть две основные конструкции, которые мы можем использовать, когда дело доходит до принятия решений.

If-Else

Первая — это конструкция if-else, пример которой мы можем увидеть ниже.

fun main(){
    val controlling:Int = 3;

    if(controlling < 4){
        println("The Value is less than 4")
    }
    else{
        println("The value is larger than 4")
    }
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Это не кажется очень полезным, поэтому давайте, возможно, сделаем быстрый пример, где мы случайным образом генерируем 4 числа, используя пакет kotlin random.

import kotlin.random.Random

fun main(){
    var controlling:Int;
    for( i in 1..4){
        controlling = (0..10).random()
        if(controlling < 4){
            println("The Value of $controlling is less than 4")
        }
        else{
            println("The value of $controlling is larger than 4")
        }
    }
}
Вход в полноэкранный режим Выйти из полноэкранного режима

который мы можем упростить до

import kotlin.random.Random

fun main(){
    var controlling:Int;
    for( i in 1..4){
        controlling = (0..10).random()
        println(
            "The value of $controlling is ${
                if(controlling > 4) "greater" else "less"
            } than 4"
        )
    }
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Это, в свою очередь, дает тот же результат

The value of 7 is greater than 4
The value of 10 is greater than 4
The value of 5 is greater than 4
The value of 8 is greater than 4
Ввести полноэкранный режим Выйти из полноэкранного режима

Когда использовать When? 🙂

Другим потенциальным способом выражения этой логики является использование конструкции when.

import kotlin.random.Random


fun main(){
    var controlling:Int;
    for( i in 1..4){
        controlling = (0..10).random()
        when(controlling){
            in 0..4 -> println("$controlling is less than or equal to 4")
            in 5..10 -> println("$controlling is greater than 4")
            else -> println("Unsupported Number")
        }
    }
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Давайте немного пройдемся по этой логике.

  1. Мы знаем, что (0...10).random() даст нам число в диапазоне от 0 до 10. Это инклюзивный диапазон, что означает, что мы можем получить 0 и 10. *Таким образом, мы знаем, что нам нужно сравнивать только те числа, которые находятся в этом диапазоне. *

  2. Мы хотим вывести «less than 4», если получим число меньше или равное 4, в противном случае мы выведем «greater than 4». Это означает, что мы разбиваем наше число на два неравных множества или группы.

Вот эти две группы

1,2,3,4 (выражается как 1..4)
5,6,7,8,9,10 (выражается как 5..10).

  1. Поэтому мы можем просто переписать, используя цикл when для проверки принадлежности к той или иной стороне.

В целом, я считаю, что цикл When более полезен, когда вам нужно сделать более двух или трех вариантов.

Некоторые полезные сокращения синтаксиса, которые следует запомнить при использовании When, приведены ниже

  1. Конечное число различных вариантов

Давайте сначала перепишем наш исходный пример, чтобы воспользоваться синтаксисом ,. Обратите внимание, что теперь мы не используем ключевое слово in.

import kotlin.random.Random


fun main(){
    var controlling:Int;
    for( i in 1..4){
        println(i)
        controlling = (0..10).random()
        when(controlling){
            0,1,2,3,4 -> println("$controlling is less than or equal to 4")
            5,6,7,8,9,10 -> println("$controlling is greater than 4")
            else -> println("Unsupported Number")
        }
    }
}
Вход в полноэкранный режим Выход из полноэкранного режима

Пример 2. Множественные условия

Давайте напишем короткий фрагмент, который поможет нам проверить, может ли пользователь войти в систему на основе заданного имени пользователя или пароля.

Примечание: При желании мы можем легко заменить следующий фрагмент на цикл if-else. Лично я думаю, что это сводится к вопросу предпочтений, When просто чище в целом для меня.


fun main(){
    val correct_username = "john.smith"
    val correct_password = "applebees"

    val username_attempts = listOf(
        "antique","john.smith","john.smith"
    )

    val password_attempts = listOf(
        "applebees","apples","applebees"
    )

    for(i in 0..2){

        when{
            correct_password == password_attempts[i] && correct_username == username_attempts[i] -> println("Login Succesful")
            correct_username != username_attempts[i] -> println("Wrong Username")
            correct_password != password_attempts[i] -> println("Wrong Password")
            else -> println("Horrible Attempt")
        }
    }
}
Войти в полноэкранный режим Выход из полноэкранного режима

Заключение

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

Оцените статью
devanswers.ru
Добавить комментарий