Чеерт, котлин украл из моего языка идею универсального котнрол флов оператора. Их when можно использовать как ряд if elsoв делая по условию в каждой ветке, или как около паттерн матчинг, с ИЛИ вариантами через запятую.
Угадайте где еще можно также
Угадайте где еще можно также
Гайд по пополнению запаса, берем панталоджик или любую игру с кучей диалогов(еще советую Sunless Sea и Skies), Записываем все неясные слова в отдельный блокнотик. Пишем прогу на любимом языке которая будет проверять ваши знания блокнотика.
Чел делает маленькие компутактеры в странных формфакторах https://youtu.be/eR3kf-nUY-s
gavr_sas
6) ИИИИ теперь внимание, 1) перегружаем у класса invoke оператор, 2) передаем туда лямбду 3) пускай эта лямбда принимает Функцию Расширения! этого же класса!!! Так как этот перегруженные оператор invoke принимает только лямбду и никаких больше аргументов…
13) Reified types, это не так круто как звучит, просто изза того что в жабе дженерики erased(так их добавили чтобы не ломать обратную совместимость) рантайм о них ничего не знает, то есть мы даже не можем проверить его тип через T::class.java(скрин 1)
Так вот это можно пофиксить, если функцию сделать inline, а дженерик тип reified. Так как функция инлайнится в место вызова, в котором собственно все о типе T известно, все ограничения erased дженериков спадают. Проблема только в том что инлайн функции нельзя колить из джавы, но это не страшно.
Еще одно применение это перегрузка по возвращаемому значению, ясное дело что обычно так не перегрузишь(разве что в языке есть кт темплейты), а тут с reified можно
Просто делаем switch по дженерик типу дженерик параметра T::class, и кастуем возвращаемое значение в тот же тип
Конечно хотелось бы просто темплейты как в ниме/С++, но с учетом что под капотом жаба и так уже хоть чтото
#kotlin
Так вот это можно пофиксить, если функцию сделать inline, а дженерик тип reified. Так как функция инлайнится в место вызова, в котором собственно все о типе T известно, все ограничения erased дженериков спадают. Проблема только в том что инлайн функции нельзя колить из джавы, но это не страшно.
Еще одно применение это перегрузка по возвращаемому значению, ясное дело что обычно так не перегрузишь(разве что в языке есть кт темплейты), а тут с reified можно
Просто делаем switch по дженерик типу дженерик параметра T::class, и кастуем возвращаемое значение в тот же тип
Конечно хотелось бы просто темплейты как в ниме/С++, но с учетом что под капотом жаба и так уже хоть чтото
#kotlin
Итак, простейшая задачка, есть у вас тип в котором поле name объект из двух полей first&last name, и второе поля age,
цель создать из него плоскую дтошку, сделать универсальным пока не получается, (нужна рекурсия в типе шоб пройтись по всему дереву вложенностей объектов в объекты, не хочу думать), но все равно было очень интересно
UPD, вот с рекурсией и комментами, первый тип возвращает именно тип массива из двух элементов, да в TS может быть тип конкретного количества.
цель создать из него плоскую дтошку, сделать универсальным пока не получается, (нужна рекурсия в типе шоб пройтись по всему дереву вложенностей объектов в объекты, не хочу думать), но все равно было очень интересно
UPD, вот с рекурсией и комментами, первый тип возвращает именно тип массива из двух элементов, да в TS может быть тип конкретного количества.
Когда я был в шкиле, мне эта короткометражка показалась довольно интересной, с тех пор не пересматривал, самое время https://youtu.be/FYkH65zY9qU
YouTube
они сделаны из мяса