TGViewer
Dolgo.polo Dev | Денис Долгополов Dolgo.polo Dev | Денис Долгополов @dolgo_polo_dev · 2.18K subscribers
Post #69 2.16K
​​Как придумать свои единицы измерения на примере Compose

Вероятно, это начало серии постов о Compose. Начнем с малого

В Compose можно использовать привычные единицы измерения:
• 18.dp
• 18.sp
• 18.em

Но почему не приходится писать Dp(18) или Dp.Builder().get(18)?

Фокус в extensions-функциях, созданных для всех численных примитивов (Int, Float, Double)

Например:

inline val Int.dp: Dp get() = Dp(value = this.toFloat())

(если вы практикуете только Java, вам может стать плохо, это нормально)

Разберем каждую часть строчки:

• inline — слово, заставляющее компилятор на этапе компиляции упростить код за счет замены лямбда-выражения на последовательный код

если слово inline стоит перед переменной (как в текущем примере), то оно относится к функциям get() и set() переменной

• .dp: Dp — создание переменное типа Dp в классе Int (расширили класс Int новой переменной)

• get() — переопределили зарезервированную функцию get() для переменной dp

• this — ссылка на класс Int, то есть в случае 18.dp ссылка на класс Int(18)

• value — название параметра в конструкторе класса Dp (просто для наглядности)

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

....

в боевом проекте такую фишку можно применить для управления, например, балансом юзера — 18.rub + 20.dol = 30.eur. еще идеи?
  • 🔥 14
  • ❤ 5
  • 👍 3
  • 😁 2
More from @dolgo_polo_dev
  1. Jun 22, 2026Медиалента — то, что пользователь реально ощущает физически: скроллы, зумы, тапы. Любые ми…
  2. Jun 20, 2026👮‍♀️ Как VPN видит трафик всех приложений? технически VPN на андроид — это сервис внутри…
  3. Jun 13, 2026Дуров опять не старается 🍌🍌🍌 Пару месяцев назад команду телеграма ругали за то, что они…
  4. May 24, 2026🧬Может ли VPN ускорить интернет? Интуиция подсказывает — точно нет Добавляется лишний сер…
  5. May 22, 2026кто же знал, что основным выгодополучателем max 📲 окажется habr.com любая статья набирает…
  6. May 6, 2026вы снова не туда воюете сначала все пушили Compose типо верстать в 2 раза быстрее, можно с…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →