Найти тему
Kotlin. Ключевые слова in и out. А так же что такое ковариантность и контрвариантность
Здравствуйте! В этой статье речь пойдет про вариантность параметризованных типов в Котлин. ВНИМАНИЕ. СТАТЬЯ УСТАРЕЛА. ЧИТАЙТЕ ЕЁ НОВУЮ ВЕРСИЮ НА ХАБРЕ. Цель данной статьи дать первичное понимание работы ковариантности и контрвариантности в Котлин. Здесь будет рассмотрено использование ключевых слов in и out в параметризованных типах. Вариантность – это состояние наличия отношений наследования между параметризованными типами, содержащими параметры из одной иерархии наследования. Это мы и будем разбирать на примерах...
2 года назад
Kotlin. Зачем нужны дженерики (generics)?
Здравствуйте! Хотели бы вы создавать "универсальные" классы, которые могут работать с любым типом данных, будь то Int, Double, String, ... (или какой-то свой тип), причем этот код будет поддерживать все типы данных одновременно? Речь пойдет про обобщенное программирование в Котлин. Мы сможем создавать универсальные структуры, такие как классы, интерфейсы и функции, которые подходят для работы с любыми типами данных. Сразу давайте введем новое понятие – «тип» . Типом называют некую структуру, которая...
135 читали · 2 года назад
Kotlin. Зачем нужны ключевые слова inline, noinline, crossinline?
Здравствуйте! Сегодня поговорим как мы можем оптимизировать работу функций высшего порядка в Котлин, с помощью ключевого слова inline. Inline нужен в следующих случаях: Функции высшего порядка, как вы помните, это функции, которые берут другие функции в качестве параметра (или возвращают их в качестве результата). Допустим есть такой код: Здесь всё просто, есть функция doSomething, которая что-то делает, и есть место её вызова — это функция main. Для её работы, лямбда выражения компилируются в анонимные классы, каждый раз когда используются...
580 читали · 2 года назад
Kotlin. Зачем нужно ключевое слово typealias?
Приветствую! Продолжаем делать наш код более продвинутым :) Сегодня мы разберем на примерах зачем нужно ключевое слово typealias в Kotlin. Как оно работает, что дает программисту его использование, и как это всё отражается на байт-коде. C помощью typealias, Котлин позволяет создать простой и короткий псевдоним нужного типа данных, который будет легко читаться и тем самым убрать нагромождение в коде. 👉 Давайте сразу посмотрим пример. Допустим, есть такая функция doSomething (а может даже не одна), которая берет другую функцию в качестве параметра и как-то её использует у себя...
2 года назад
Kotlin. Зачем нужно ключевое слово operator?
Привет! Сегодня мы поговорим зачем нужно ключевое слово operator в Kotlin. Если коротко, то оно служит, чтобы расширить стандартные операции языка (такие как +, - , * и другие) на ваши собственные типы данных. По умолчанию Котлин умеет складывать, умножать, вычитать, делить, инкрементировать (да много чего еще) со числовыми типами данных, умеет соединять строки, добавлять значения в массивы и тд. Это известно и понятно, но мы бы хотели научить Котлин работать так же с наши классами. Вот тут нам и поможет ключевое слово operator...
2 года назад
Kotlin. Зачем нужно ключевое слово infix?
Здравствуй, дорогой читатель! Сегодня мы поговорим зачем нужно ключевое слово infix в Котлине. А нужно оно чтобы сделать красивый код на Kotlin еще красивее:) 👉 Допустим вы хотите возвести некоторое число в степень, и у вас есть функция для этого: fun Int.raise(n : Int) = this.toDouble().pow(n).toInt() Обычно вы вызываете её вот так: fun main() { val result = 2.raise(3) println(result) } Всё хорошо, но можно сделать красивее и нагляднее, например вообще избавиться от точки и скобок. Для этого нам понадобится пометить нашу функцию ключевым словом infix: infix fun Int...
183 читали · 2 года назад
Kotlin. Зачем нужен lateinit ?
Здравствуй, дорогой читатель! 👉 Сегодня мы поговорим о том зачем нужно lateinit в Kotlin. Программируя на Kotlin, вы уже знаете, что есть переменные/свойства какого либо типа, которые хранят значения, например var password : String = "paSsw0rD" переменная password хранит, ваш пароль от умного тостера или var podarok : Box = Box() или переменная podarok хранит объект "коробка" из которого можно извлечь подарок и что-то с ним сделать. Так вот, в реальной ситуации не всегда бывает можно сразу иметь значения для некоторых переменных при создании класса...
2 года назад