🚀 Яндекс открыл регистрацию на Yandex Cup — чемпионат по программированию с финалом в Стамбуле и призовым фондом 12 млн ₽!
📱 Направление «Мобильная разработка» ждёт iOS- и Android-разработчиков. Будет 5 призовых мест:
🥇 500 000 ₽
🥈 400 000 ₽
🥉 300 000 ₽
🏅 200 000 ₽
🏅 100 000 ₽
📅 Важно:
⏺️ 20–29 октября — пробный тур (знакомство с задачами)
⏺️ 2 ноября — квалификация (отбор 180 финалистов)
⏺️ 5–7 декабря — офлайн-финал в Стамбуле 🎉
👨💻 Финалисты получат шанс пройти собеседование в Яндекс по упрощённой схеме.
Для специалистов — это возможность посоревноваться с лучшими программистами со всего мира и проверить свои навыки мобильной разработки.
🔗 Регистрируйтесь до 29 октября
Успейте заявить о себе! 💡
📱 Направление «Мобильная разработка» ждёт iOS- и Android-разработчиков. Будет 5 призовых мест:
🥇 500 000 ₽
🥈 400 000 ₽
🥉 300 000 ₽
🏅 200 000 ₽
🏅 100 000 ₽
📅 Важно:
👨💻 Финалисты получат шанс пройти собеседование в Яндекс по упрощённой схеме.
Для специалистов — это возможность посоревноваться с лучшими программистами со всего мира и проверить свои навыки мобильной разработки.
🔗 Регистрируйтесь до 29 октября
Успейте заявить о себе! 💡
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🤯3🔥2❤1
❗️ Все новые функции пока экспериментальные — их использование требует аннотаций или специальных флагов компилятора.
val Any.isHelloString: Boolean
get() {
contract { returns(true) implies (this@isHelloString is String) }
return "hello" == this
}
fun decode(encoded: String?): String? {
contract { (encoded != null) implies (returnsNotNull()) }
if (encoded == null) return null
return java.net.URLDecoder.decode(encoded, "UTF-8")
}
Документация
fun <T> T.alsoIf(
condition: Boolean,
block: (T) -> Unit,
): T {
contract {
// Объявляет, что лямбда будет вызвана не более одного раза
callsInPlace(block, InvocationKind.AT_MOST_ONCE)
// Объявляет, что условие считается истинным внутри лямбды
condition holdsIn block
}
if (condition) block(this)
return this
}
fun <T, F : Failure> Result<T, F>.isHttpError(): Boolean {
contract {
returns(true) implies (this@isHttpError is Result.Failed<Failure.HttpError>)
}
return this is Result.Failed && this.failure is Failure.HttpError
}
✨ Зачем это нужно
Контракты помогают компилятору и IDE лучше понимать поведение функций и условий в коде. Это значит: меньше лишних !!, меньше кастов типов, больше подсказок от IDE и меньше багов на рантайме. По сути, вы даёте компилятору «дополнительные знания», и он становится умнее при анализе вашего кода.
#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍40🔥5