Menu
Coddy logo textTech

Захваченные переменные

Часть раздела Логика и управление потоком путешествия по Kotlin на Coddy. Урок 29 из 63.

Лямбда может использовать переменные из окружающей области видимости. Это называется захватом. Если захваченная var изменяется, при последующем вызове используется её текущее значение. Захват также позволяет возвращённой лямбде сохранять состояние между вызовами.

Внутри main:

var offset = 2
val addOffset = { n: Int -> n + offset }
offset = 5
println(addOffset(3))

Лямбда считывает текущее значение offset, равное пяти, когда её вызывают.

Захваченная изменяемая переменная — это общее состояние, а не зафиксированная копия её исходного значения.

challenge icon

Задание

Средне

Дополните capturedOffset параметрами value: Int, offset: Int. Создайте лямбду, которая добавляет окружающее смещение к своему целочисленному аргументу, затем примените её к value.

Если выше не указаны более строгие ограничения, коллекции содержат не более 100 элементов на каждом уровне, а целочисленные аргументы и целочисленные значения коллекций находятся в диапазоне от -1000 до 1000. Текст, предоставленный для разбора, может содержать недопустимые представления или представления, выходящие за допустимый диапазон, как описано выше.

Верните значение типа Int. Сохраните предоставленный код ввода/вывода. Он считывает скалярные аргументы по одному в строке; список начинается с его размера, за которым следуют его элементы, а map начинается с количества записей, за которым следуют каждый ключ и значение. Вложенные списки повторяют формат «количество и элементы» для каждой строки. Предоставленный main выводит возвращаемое значение, за которым следует один перевод строки. Списки используют стандартный формат Kotlin со скобками; не выводите дополнительные метки.

Попробуйте сами

fun capturedOffset(value: Int, offset: Int): Int {
    // Напишите ваше решение здесь.
    return 0
}
fun main() {
    val value = readln().toInt()
    val offset = readln().toInt()
    println(capturedOffset(value, offset))
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Песочница Kotlin