Kotlin. Inline Functions. Inline Classes [Ru, Kotlin] / Мобильный разработчик

  Рет қаралды 15,133

Mobile Developer

Mobile Developer

Күн бұрын

Всем привет!
Продолжаем изучать функционал Котлина и на очереди у нас инлайн классы и инлайн функции и, хотя, это несколько разные вещи у них общее (пока что) название и поэтому я объединил их в один выпуск, потому что их часто путают и объединяют. Надеюсь видео будет полезным. Пишите в комментариях чего хотелось бы увидеть следующим.
Напоминаю, что видео вначале выходят для моих патронов. Стать патроном можно по ссылке ниже
===========================================
Стать Патроном канала и получить доступ к уникальному материалу
/ mobiledeveloper
===========================================
Мобильный разработчик в других соц. сетях
=======================
Вконтакте - mdeveloper
Instagram - / nplau
Телеграм - t.me/mobiledev...
=======================
Ставь лайк и расскажи друзьям, чтобы они тоже попробовали эту технологию

Пікірлер: 65
@MobileDeveloper
@MobileDeveloper 4 жыл бұрын
Всем привет. Удлинили время вставок и сделали их крупнее, но принципиально иной формат будет уже в следующих видео. Приносим извинения за неудобства )
@poloplopol9791
@poloplopol9791 Жыл бұрын
афигенный видос, более понятно еще не слышал про ФП и inline
@MikolaDelopata
@MikolaDelopata Жыл бұрын
Хорошо объяснил, особенно зашла тема с рассмотрением кода с реальных проектов.
@borisphen2001
@borisphen2001 2 жыл бұрын
Спасибо за видео! Все четко разложил по полочкам)
@Chron4ik
@Chron4ik 3 жыл бұрын
"Терпения, мать друзья", улыбнуло :)
@mironoff2007
@mironoff2007 3 жыл бұрын
Проходил собес на джуна, дважды спросили, что такое инлайн функции и я честно ответил, что не знаю. Придется изучать)
@maxsimpleapps
@maxsimpleapps 4 жыл бұрын
Алексей, привет. Спасибо за видос. Разбери пожалуйста тему in и out в котлине. Желательно на примере аналогий.
@ki16or
@ki16or 4 жыл бұрын
это про ковариантность и контрвариантость) могу дать ссылку на статью, где это разжовывается.
@user-sankarsana
@user-sankarsana 4 жыл бұрын
@@ki16or так где же ссылка?
@ki16or
@ki16or 4 жыл бұрын
@@user-sankarsana , https :// programming086.blogspot.com/2018/02/kotlin-generics .html я не знаю, как ютуб реагирует на ссылки в комменты, но вот так думаю в любом случае пройдет
@MobileDeveloper
@MobileDeveloper 4 жыл бұрын
Я чет не понял в итоге снимать про это видео или нет )
@maxsimpleapps
@maxsimpleapps 4 жыл бұрын
@@MobileDeveloper снимать! Однозначно снимать 🖖
@dmytromarchuk3023
@dmytromarchuk3023 4 жыл бұрын
Про inline классы не был в курсе, как-то упустил. Юзабельно. Спасибо.
@MobileDeveloper
@MobileDeveloper 4 жыл бұрын
Пожалуйста :)
@mamyna_bysinka
@mamyna_bysinka 4 жыл бұрын
То что надо в субботу с утра!!!!
@MobileDeveloper
@MobileDeveloper 4 жыл бұрын
Утро начинается не с кофе
@artemkhateev3650
@artemkhateev3650 3 жыл бұрын
Огонь видео, спасибо)
@MobileDeveloper
@MobileDeveloper 3 жыл бұрын
Пожалуйста )
@xlit97
@xlit97 4 жыл бұрын
Круто! Спасибо, давно хотел узнать, что за inline class'ы, но всё никак руки не доходили, оказывается довольно полезная штука может быть)
@MobileDeveloper
@MobileDeveloper 4 жыл бұрын
В целом да ) Пожалуйста)
@АртурПетров-н3у
@АртурПетров-н3у 4 жыл бұрын
Ждём видео про профайлер и как замерять
@Framidilful
@Framidilful 3 жыл бұрын
Супер, круто, спасибо
@sergeyvoloshin1553
@sergeyvoloshin1553 3 жыл бұрын
из видео запомнил что лупа получил за пипу, а пипа за лупу
@MobileDeveloper
@MobileDeveloper 3 жыл бұрын
Это прискорбно, пересмотрите ещё раз, может что-нибудь ещё запомнится)
@vadimn6393
@vadimn6393 28 күн бұрын
15:24 Ошибка? Почему `!clazz.isInstance(p)` (и `p !is T`), а не соответствующие выражения без `!` отрицания. Класс TreeNode, так понимается, определяется типа как: class TreeNode(val parent: TreeNode?) В этом плане, зачем вообще нужны проверки типа clazz.isInstance или p is T, ведь parent и так всегда имеет тип `TreeNode?`.
@_MrKekovich
@_MrKekovich 6 ай бұрын
Чистое ФП - это неудобно, потому что ты почти всегда просто копируешь с новыми параметрами. Сейчас популярные языки имеют state и я думаю, что это хорошо
@ЮрійБережний-с7ъ
@ЮрійБережний-с7ъ 4 жыл бұрын
То что нужно!
@d.mertsalov
@d.mertsalov 3 жыл бұрын
Спасибо!
@MobileDeveloper
@MobileDeveloper 3 жыл бұрын
Пожалуйста )
@rustamibrahimli2113
@rustamibrahimli2113 4 жыл бұрын
Сделай пожалуйста видосы про Room
@kafychannel
@kafychannel 4 жыл бұрын
Если хочешь, могу помочь разобраться, там ничего сложного, не бесплатно конечно же ну много не возьму
@rustamibrahimli2113
@rustamibrahimli2113 4 жыл бұрын
@@kafychannel мне не нужно, я для всех говорил
@MobileDeveloper
@MobileDeveloper 4 жыл бұрын
Сделаю обязательно
@rustamibrahimli2113
@rustamibrahimli2113 4 жыл бұрын
@@MobileDeveloper Спасибо тебе большое!!
@Steklopod
@Steklopod 3 жыл бұрын
Kotin is the best!
@MobileDeveloper
@MobileDeveloper 3 жыл бұрын
Согласен )
@СергейПанов-з3ц
@СергейПанов-з3ц 4 жыл бұрын
Поумничаю в комментариях... При вызове inline функций из java классов инлайнинг убирается и лямбды, преобразуются в классы. Inline функции с овеществленным параметром нельзя вызывать из java классов. Inline классы имеют баги и могут быть причиной ошибок во время исполнения. Не просто так они сейчас в экспериментальном статусе.
@MobileDeveloper
@MobileDeveloper 4 жыл бұрын
Круто, спасибо )
@alexandernifanin7366
@alexandernifanin7366 4 жыл бұрын
Использую inline не для скорости, как в Паскале и Си, а для такого. 1. Reified. 2. Helper-класс с корутинами. Внутри его методов могут быть эксепшены. Они летят в try-catch, но ошибку показывают в крэш-логе внутри helper-класса. В итоге я никогда не нашёл бы источник ошибки. Поэтому делаю inline, crossinline у методов.
@MobileDeveloper
@MobileDeveloper 4 жыл бұрын
Интересный подход )
@ki16or
@ki16or 4 жыл бұрын
Крутое видео! Респект! Добавлю комментарий про crossinline. Тут неважно, производительно оно или нет. Вообще сам факт передачи лябды в другой контекст очень напоминает ту часть видео, где один человек засовывает другому человеку в отверстия неорганичные предметы различных габаритов. Если смотрящий без отклонений - то смотреть неприятно. Проблема в том, что если все же передать лямбду в другой контекст, то return без лейбла уже сработает не так, как ожидается. И crossinline просто говорит компилятору (и синтаксическому анализатору), что в crossinline лямбде уже не работает разрешение просто использовать return, обязательно нужен будет лейбл. Или тег? Чот запамятовал( По факту, это всего лишь не дает пишущему лябмду застрелиться, показывая, что функция уходит в другой контекст, ну и сигнализируя среде разработке, чтобы там подчеркивалось с ошибкой return без лейбла. Соответственно, компилятор тоже не скопилит такую дичь с return без лейбла)
@MobileDeveloper
@MobileDeveloper 4 жыл бұрын
Спасибо, очень крутое замечание!
@sadyknasrullaev9951
@sadyknasrullaev9951 4 жыл бұрын
Спасибо за видео! Подскажи пожалуйста, Как ты достаёшь код декомпилированный из котлина в джаву?
@A-pe5yy
@A-pe5yy 4 жыл бұрын
Tools > Kotlin > Show Kotlin Bytecode и затем Decompile.
@sadyknasrullaev9951
@sadyknasrullaev9951 4 жыл бұрын
@@A-pe5yy Спасибо!
@kirillsushilnikov9614
@kirillsushilnikov9614 2 жыл бұрын
ничего не понял, но очень интересно)
@ivanchepelkin6347
@ivanchepelkin6347 4 жыл бұрын
Хмм..задумался. Я делаю адаптер для ресайклер вью и прям через конструктор адаптера передаю функцию моего презентера/viemodel. Это функция вызывается на холдере после клика на этот холдер. Получается, если у меня будет 1000 эл-ов в списке , значит создатся 1000 анонимных классов и память пойдет вверх?
@MobileDeveloper
@MobileDeveloper 4 жыл бұрын
Не думаю, что это так произойдет, но надо померять.
@kafychannel
@kafychannel 3 жыл бұрын
Привет,если ты передаешь анонимный класс (интерфейс) в конструктор,а потом юзаешь эту ссылку при тапе на ту же кнопку,то создается 1 анонимный класс (при передачи его в конструктор адаптера)
@pavlosoia
@pavlosoia 4 жыл бұрын
только у меня на 6:35 качество видео падает?
@pavlosoia
@pavlosoia 4 жыл бұрын
да, только у меня))) Скорость инета упала.
@MobileDeveloper
@MobileDeveloper 4 жыл бұрын
Качество всегда огонь 😂
@wtf_nick
@wtf_nick 4 жыл бұрын
Краткий конспект с такими же примерами kotlinlang.ru/docs/reference/inline-functions.html )
@AlexSmile-y2x
@AlexSmile-y2x Жыл бұрын
Ох уж эти мобильные разработчики)) 1. В Математике нет никаких "функций высшего порядка", это программисты придумали, а в Математике это называется оператором )) 2. Такой бред как на 8:56 в Java нельзя сделать, не надо пороть чепуху. Просто ты пытаешься тут декомпилировать байт-код Котлин в Java вместо того, чтобы использовать Kotlin bytecode inspector, а kotlinc компилирует по иным шаблонам, нежели javac, поэтому декомпитятор тебе билиберду рисует. Если откроешь байткод и посмотришь, то там нет никакого "нулл инстанса" и все значения устанавливаются адекватно обычному инстансу Function2 типа (и разумеется нет никаких "статических инстансов" по определению, статическими только переменные могут быть😂)
@evgenyfetskovich9617
@evgenyfetskovich9617 4 жыл бұрын
Опять эта сетка на весь экран. Невозможно смотреть.
@A-pe5yy
@A-pe5yy 4 жыл бұрын
Не смотри, никто не заставляет.
@awkwardquestion8643
@awkwardquestion8643 4 жыл бұрын
@@A-pe5yy буду!🤦
Вопрос Ребром - Джиган
43:52
Gazgolder
Рет қаралды 3,8 МЛН
Andro, ELMAN, TONI, MONA - Зари (Official Music Video)
2:50
RAAVA MUSIC
Рет қаралды 2 МЛН
FULL Guide to Kotlin's Inline Keyword (inline, crossinline & noinline)
16:35
#7. Kotlin в картинках. Лямбда выражения. Функции высшего порядка. Лямбды просто.
16:30
Мобильный разработчик | Юрий Петров | Flutter
Рет қаралды 13 М.
From Inline to Value Classes
11:29
Kotlin by JetBrains
Рет қаралды 11 М.
Вопрос Ребром - Джиган
43:52
Gazgolder
Рет қаралды 3,8 МЛН