🧹Hamma uchun tarixni tozalash
– Android uchun Telegram’ning beta-versiyasida endi siz nafaqat o‘zingiz, balki barcha ishtirokchilar uchun guruh suhbati tarixini tozalashingiz mumkin.
Xabarlarni hamma uchun tozalash imkoniyati faqat guruh egasi uchun mavjud. Eslatma: biz xozirda chat tarixini tozalash uchun turli botlardan foydalanamiz.
Ushbu imkoniyat faqat superguruhlarda ishlaydi va tez kunda Telegramga qo'shilishi kutilmoqda.
#Android#beta
💚@TGraphUz | YouTube
🤯The long-awaited launch of the trading terminal from Electra!
🔔 TON Events is a partner of DEX Electra✔️, which gives you a unique opportunityto try out the trading terminal 10 days before its public opening!
🚀#Electra is an innovative multi-chain DEX that combines the strengths of centralized (CeFi) and decentralized (DeFi) platforms.
⚡️Key Features of Electra
⏺Competitive fees are the best of any DEX and significantly lower than many CEXs.
⏺Freedom and security — no KYC, upcoming integration with Telegram and multi-chain trading capabilities.
⏺Deep liquidity with no slippage, comparable to the best CEX.
📈A trading tournament with attractive rewards is planned to be launched very soon! The main prizes will be distributed depending on the trading volumes in the terminal, so that start accumulating right now!🔋
🤔How to participate
✔️ Open the Electra terminal.
✔️ Connect your EVM wallet (e.g. MetaMask, TrustWallet, Rabby or any other you like). Make sure your wallet has some BNB (BSC BEP-20) for the one-time fee.
✔️Make a deposit in USDT via one of the available networks.
⏺Start trading!
🤝 In addition, farming of points in the Electra mini-app continues, which will be converted into $ELT tokens during the TGE, which will take place this spring!
🚀Start using Electra Trading Terminal right now!
#Electra#Trading#DEX#beta
🏝Kotlin where: Элегантное ограничение типов для чистоты и безопасности
Как часто в Android-разработке вы видели сомнительные as-приведения? 🤔
Вот пример, который недавно попался мне на глаза:
class Sample(private val activity: Activity) {
fun doSomething() {
// Опасно! Может упасть с ClassCastException,
// если activity не реализует LifecycleOwner
(activity as LifecycleOwner).lifecycle.addObserver(...)
}
}
Опустим тот факт, что здесь стоит использовать слабую ссылку (WeakReference) на Activity. Меня больше смутила необходимость вручную приводить Activity к LifecycleOwner.
Да, в современной Android-разработке AppCompatActivity и FragmentActivity реализуют этот интерфейс. Но наша цель — писать чистый и стабильный код, который не полагается на слепую веру, а гарантирует безопасность на уровне типов.
💡Решение: Ограничение типов с помощью where
В Kotlin мы можем использовать условие where для универсальных параметров, чтобы указать: «класс A должен быть одновременно и Activity, и LifecycleOwner
class Sample<A>(private val activity: A)
where A : Activity,
A : LifecycleOwner {
fun doSomething() {
// Теперь activity можно использовать как LifecycleOwner
// БЕЗОПАСНО и без приведения типов
activity.lifecycle.addObserver(...)
}
}
Этот же подход отлично работает и для функций:
fun <A> doSomethingWith(activity: A)
where A : Activity,
A : LifecycleOwner {
// Полная типобезопасность
activity.lifecycle.addObserver(...)
}
В чем выигрыш?
Безопасность: Компилятор гарантирует, что в класс Sample или функцию doSomethingWith можно передать только объект, который удовлетворяет обоим условиям:
1️⃣Исключаются ошибки ClassCastException в рантайме.
2️⃣Чистота кода: Исчезают громоздкие и опасные приведения через as.
3️⃣Выразительность: Сигнатура класса/функции явно сообщает о своих требованиях к переданным зависимостям.
Используйте силу системы типов Kotlin на полную! Это делает код не только чище, но и стабильнее. 💪
#kotlin#android#androiddev