3. Узнайте больше о функциях

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

На этом этапе вы объединяете полученные знания и создаете функции разных типов. Вы можете заменить содержимое файла Hello.kt этим новым кодом.

  1. Напишите функцию, feedTheFish()которая вызывается randomDay()для получения случайного дня недели. Используйте строковый шаблон для вывода названия foodдня недели, который будут есть рыбы. Пока что рыбы едят одну и ту же пищу каждый день.
fun feedTheFish() {
    val day = randomDay()
    val food = "pellets"
    println ("Today is $day and the fish eat $food")
}

fun main(args: Array<String>) {
    feedTheFish()
}
  1. Добавьте randomDay()в файл Hello.kt функцию , которая выбирает случайный день из массива и возвращает его.

Функция nextInt()принимает целочисленный параметр limit, который ограничивает число значениями от Random()0 до 6 в соответствии с weekмассивом.

fun randomDay() : String {
    val week = arrayOf ("Monday", "Tuesday", "Wednesday", "Thursday",
            "Friday", "Saturday", "Sunday")
    return week[Random().nextInt(week.size)]
}
  1. Функции ` Random()and` и `or` nextInt()определены в файле ` java.util.*.`. В верхней части файла добавьте необходимый импорт:
import java.util.*    // required import
  1. Запустите свою программу и проверьте результат.
⇒ Today is Tuesday and the fish eat pellets

Развивая эту идею дальше, измените код так, чтобы он выбирал разные продукты для разных дней с помощью whenвыражения. Оператор whenаналогичен тому, что используется switchв других языках программирования, но whenавтоматически останавливается в конце каждой ветви. Это также гарантирует, что ваш код охватит все ветви, если вы проверяете перечисление.

  1. В файле Hello.kt добавьте функцию fishFood(), которая принимает в качестве параметра день Stringи возвращает в качестве параметра корм для рыбы на этот день String. Используйте функцию `getCareer()` when(), чтобы каждый день рыба получала определенный корм. Запустите программу несколько раз, чтобы увидеть разные результаты.
fun fishFood (day : String) : String {
    var food = ""
    when (day) {
        "Monday" -> food = "flakes"
        "Tuesday" -> food = "pellets"
        "Wednesday" -> food = "redworms"
        "Thursday" -> food = "granules"
        "Friday" -> food = "mosquitoes"
        "Saturday" -> food = "lettuce"
        "Sunday" -> food = "plankton"
    }
    return food
}

fun feedTheFish() {
    val day = randomDay()
    val food = fishFood(day)

    println ("Today is $day and the fish eat $food")
}
⇒ Today is Thursday and the fish eat granules
  1. Добавьте в выражение ветвь по умолчанию, whenиспользуя else`.`. Для тестирования, чтобы убедиться, что в вашей программе иногда используется ветвь по умолчанию, удалите ветви ` Tuesdayи` Saturday.

Наличие ветви по умолчанию гарантирует, что foodзначение будет получено до возврата, поэтому инициализация больше не требуется. Поскольку код теперь присваивает строку foodтолько один раз, вы можете объявить foodеё с помощью valвместо var.

fun fishFood (day : String) : String {
    val food : String
    when (day) {
        "Monday" -> food = "flakes"
        "Wednesday" -> food = "redworms"
        "Thursday" -> food = "granules"
        "Friday" -> food = "mosquitoes"
        "Sunday" -> food = "plankton"
        else -> food = "nothing"
    }
    return food
}
  1. Поскольку каждое выражение имеет значение, этот код можно сделать немного лаконичнее. Верните значение выражения whenнапрямую и уберите foodпеременную. Значение выражения when— это значение последнего выражения ветви, удовлетворяющего условию.
fun fishFood (day : String) : String {
    return when (day) {
        "Monday" -> "flakes"
        "Wednesday" -> "redworms"
        "Thursday" -> "granules"
        "Friday" -> "mosquitoes"
        "Sunday" -> "plankton"
        else -> "nothing"
    }
}

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

import java.util.*    // required import

fun randomDay() : String {
    val week = arrayOf ("Monday", "Tuesday", "Wednesday", "Thursday",
        "Friday", "Saturday", "Sunday")
    return week[Random().nextInt(week.size)]
}

fun fishFood (day : String) : String {
    return when (day) {
        "Monday" -> "flakes"
        "Wednesday" -> "redworms"
        "Thursday" -> "granules"
        "Friday" -> "mosquitoes"
        "Sunday" -> "plankton"
        else -> "nothing"
    }
}

fun feedTheFish() {
    val day = randomDay()
    val food = fishFood(day)
    println ("Today is $day and the fish eat $food")
}

fun main(args: Array<String>) {
    feedTheFish()
}

Last modified: Sunday, 5 April 2026, 12:27 PM