Друкарня від WE.UA

Kotlin: coerceAtLeast і coerceAtMost спрощено

💡 Що означає “Coerce”?
Англійське слово “coerce” означає:

Примусити або змусити когось зробити щось, навіть якщо ця людина не хоче цього робити добровільно.

У програмуванні coercion означає приведення значення до певних меж чи обмежень, навіть якщо це значення не відповідає їм природним чином.

Розглянемо функції coerceAtLeast і coerceAtMost у Kotlin. Розуміння їхньої роботи допоможе уникнути тонких помилок.

coerceAtLeast(value)

Забезпечує, щоб значення було щонайменше заданим числом. Це можна уявити як механізм "підйому".

Аналогія:
Уявіть атракціон у парку розваг із вимогою мінімального зросту 150 см:

  • Якщо ваш зріст понад 150 см, ви можете зайти без проблем.

  • Якщо менше, вам потрібен "підйом", щоб відповідати вимогам.

Код:

val height = 140 
val minHeight = 150 
val result = height.coerceAtLeast(minHeight) 
println(result) // Виведе: 150

Якщо зріст менший за мінімальну вимогу, він "підтягується" до 150.

coerceAtMost(value)

Забезпечує, щоб значення не перевищувало задане число. Це як механізм "сповільнення".

Аналогія:
Уявіть шкільну зону з обмеженням швидкості 40 км/год:

  • Якщо ви їдете 50 км/год, потрібно зменшити швидкість до 40 км/год.

Код:

val speed = 50 
val maxSpeed = 40 
val result = speed.coerceAtMost(maxSpeed) println(result) // Виведе: 40

Якщо швидкість перевищує максимальну межу, вона зменшується до 40.

Короткий підсумок:

Функція

Значення

Аналогія

Ключова ідея

coerceAtLeast

Забезпечує значення не менше

Вимога до зросту на атракціоні

"Підйом"

coerceAtMost

Забезпечує значення не більше

Обмеження швидкості

"Сповільнення"

Практичний приклад:

Для задачі знаходження максимальної кількості одиниць поспіль у масиві можна використати coerceAtLeast для оновлення максимальної кількості:

class Solution {
    fun findMaxConsecutiveOnes(nums: IntArray): Int {
        var maxCount = 0
        var currentCount = 0
        for (num in nums) {
            when (num) {
                1 -> maxCount = maxCount.coerceAtLeast(++currentCount)
                0 -> currentCount = 0
            }
        }
        return maxCount
    }
}

Це рішення для задачі з Leetcode https://leetcode.com/problems/max-consecutive-ones/solutions/6234173/simple-solution/

Головне:

  • Використовуйте coerceAtLeast, коли потрібно, щоб значення відповідало або перевищувало мінімальну межу.

  • Використовуйте coerceAtMost, щоб забезпечити верхню межу значення.

Подумайте про "підйом" для coerceAtLeast і "сповільнення" для coerceAtMost. Ці прості моделі допоможуть вам уникнути помилок при використанні цих функцій.

Статті про вітчизняний бізнес та цікавих людей:

  • Вітаємо з Різдвом Христовим!

    Друкарня та платформа WE.UA вітають всіх наших читачів та авторів зі світлим святом Різдва! Зичимо всім українцям довгожданого миру, міцного здоровʼя, злагоди, родинного затишку та втілення всього доброго і прекрасного, чого вам побажали колядники!

    Теми цього довгочиту:

    Різдво
  • Каблучки – прикраси, які варто купувати

    Ювелірні вироби – це не тільки спосіб витратити гроші, але і зробити вигідні інвестиції. Бо вартість ювелірних виробів з кожним роком тільки зростає. Тому купуючи стильні прикраси, ви вигідно вкладаєте кошти.

    Теми цього довгочиту:

    Як Вибрати Каблучку
  • П'ять помилок у виборі домашнього текстилю, які псують комфорт сну

    Навіть ідеальний матрац не компенсує дискомфорт, якщо текстиль підібрано неправильно. Постільна білизна безпосередньо впливає на терморегуляцію, стан шкіри та глибину сну. Більшість проблем виникає не через низьку якість виробів, а через вибір матеріалів та подальшу експлуатацію

    Теми цього довгочиту:

    Домашній Текстиль
  • Як знайти житло в Києві

    Переїжджаєте до Києва і шукаєте житло? Дізнайтеся, як орендувати чи купити квартиру, перевірити власника та знайти варіанти, про які зазвичай не говорять.

    Теми цього довгочиту:

    Агентство Нерухомості
  • Як заохотити дитину до читання?

    Як залучити до читання сучасну молодь - поради та факти. Користь читання для дітей - основні переваги. Розвиток дітей - це наше майбутнє.

    Теми цього довгочиту:

    Читання
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Edgar
Edgar@avuzi

Back-end розробник Java Kotlin

46Прочитань
1Автори
0Читачі
На Друкарні з 12 грудня

Більше від автора

  • 🔥 How to deep clone / copy complex objects in Kotlin or Java using MapStruct

    Have you ever stumbled upon the challenge of copying complex, nested Java/ Kotlin data structures without losing your mind or cluttering your codebase with tedious boilerplate? You’re not alone.

    Теми цього довгочиту:

    Java
  • Порівняння рішень на Java, Kotlin та Scala

    Давайте розглянемо, як задачу https://leetcode.com/problems/relative-ranks/solutions/6326961/sorting-mapping-approach можна вирішити трьома мовами програмування — Java, Kotlin та Scala.

    Теми цього довгочиту:

    Java

Це також може зацікавити:

  • Деплой телеграм боту на VPS. GitHub Actions CI/CD. DockerHub. Част. 1

    Ми часто з другом пишемо телеграм ботів для своїх потреб та інколи брейнштормимо різні ідеї для класного проєкту. Декілька днів тому, я задумався про те, щоб взяти хостинг, оскільки Free Tier на AWS закінчився, а платні тарифи там трохи кусаються.

    Теми цього довгочиту:

    Java
  • Коли лусне корпоративна бульбашка

    Ця стаття призначена для людей, які володіють просунутими навичками програмування та мають щонайменше один рік досвіду роботи в індустрії. Вона має на меті пролити світло на критичні аспекти, які професіонали такого рівня повинні враховувати для подальшого розвитку своєї кар'єри.

    Теми цього довгочиту:

    Програмування

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Це також може зацікавити:

  • Деплой телеграм боту на VPS. GitHub Actions CI/CD. DockerHub. Част. 1

    Ми часто з другом пишемо телеграм ботів для своїх потреб та інколи брейнштормимо різні ідеї для класного проєкту. Декілька днів тому, я задумався про те, щоб взяти хостинг, оскільки Free Tier на AWS закінчився, а платні тарифи там трохи кусаються.

    Теми цього довгочиту:

    Java
  • Коли лусне корпоративна бульбашка

    Ця стаття призначена для людей, які володіють просунутими навичками програмування та мають щонайменше один рік досвіду роботи в індустрії. Вона має на меті пролити світло на критичні аспекти, які професіонали такого рівня повинні враховувати для подальшого розвитку своєї кар'єри.

    Теми цього довгочиту:

    Програмування