Друкарня від 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. Ці прості моделі допоможуть вам уникнути помилок при використанні цих функцій.

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

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

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

3Довгочити
53Прочитання
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

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

  • Партиціювання у Kafka

    Пост про партиції в Kafka. Офсети. Визначення партиції. Динамічне розширення. Порядок і усунення дублікатів. Скільки треба вибирати партциій для топіка? Стратегії партиціювання.

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

    Kafka
  • Нові правила тестування для розробників Google Play: Ключові моменти та спільнота взаємодопомоги

    Google Play запроваджує нові вимоги до тестування додатків для нових особистих облікових записів розробників, створених після 15 листопада 2023 року. Ці зміни спрямовані на підвищення якості додатків та покращення досвіду користувачів. Ось ключові моменти, які варто знати:

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

    Програмування
  • Хешування паролів: використання солі та bcrypt

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

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

    Security

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

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

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

  • Партиціювання у Kafka

    Пост про партиції в Kafka. Офсети. Визначення партиції. Динамічне розширення. Порядок і усунення дублікатів. Скільки треба вибирати партциій для топіка? Стратегії партиціювання.

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

    Kafka
  • Нові правила тестування для розробників Google Play: Ключові моменти та спільнота взаємодопомоги

    Google Play запроваджує нові вимоги до тестування додатків для нових особистих облікових записів розробників, створених після 15 листопада 2023 року. Ці зміни спрямовані на підвищення якості додатків та покращення досвіду користувачів. Ось ключові моменти, які варто знати:

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

    Програмування
  • Хешування паролів: використання солі та bcrypt

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

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

    Security