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

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

Комментарии • 64

  • @MobileDeveloper
    @MobileDeveloper  3 года назад +12

    Всем привет.
    Удлинили время вставок и сделали их крупнее, но принципиально иной формат будет уже в следующих видео. Приносим извинения за неудобства )

  • @poloplopol9791
    @poloplopol9791 9 месяцев назад +1

    афигенный видос, более понятно еще не слышал про ФП и inline

  • @maxsimpleapps
    @maxsimpleapps 3 года назад +17

    Алексей, привет. Спасибо за видос. Разбери пожалуйста тему in и out в котлине. Желательно на примере аналогий.

    • @ki16or
      @ki16or 3 года назад

      это про ковариантность и контрвариантость)
      могу дать ссылку на статью, где это разжовывается.

    • @user-sankarsana
      @user-sankarsana 3 года назад

      @@ki16or так где же ссылка?

    • @ki16or
      @ki16or 3 года назад

      @@user-sankarsana , https :// programming086.blogspot.com/2018/02/kotlin-generics .html
      я не знаю, как ютуб реагирует на ссылки в комменты, но вот так думаю в любом случае пройдет

    • @MobileDeveloper
      @MobileDeveloper  3 года назад +1

      Я чет не понял в итоге снимать про это видео или нет )

    • @maxsimpleapps
      @maxsimpleapps 3 года назад +10

      @@MobileDeveloper снимать! Однозначно снимать 🖖

  • @user-nb5rv5cq3y
    @user-nb5rv5cq3y Год назад

    Хорошо объяснил, особенно зашла тема с рассмотрением кода с реальных проектов.

  • @xlit97
    @xlit97 3 года назад +2

    Круто! Спасибо, давно хотел узнать, что за inline class'ы, но всё никак руки не доходили, оказывается довольно полезная штука может быть)

  • @dmytromarchuk3023
    @dmytromarchuk3023 3 года назад +1

    Про inline классы не был в курсе, как-то упустил. Юзабельно. Спасибо.

  • @mironoff2007
    @mironoff2007 2 года назад +1

    Проходил собес на джуна, дважды спросили, что такое инлайн функции и я честно ответил, что не знаю. Придется изучать)

  • @Chron4ik
    @Chron4ik 3 года назад

    "Терпения, мать друзья", улыбнуло :)

  • @user-hk1jo3qr9q
    @user-hk1jo3qr9q 3 года назад +6

    Ждём видео про профайлер и как замерять

  • @borisphen2001
    @borisphen2001 Год назад

    Спасибо за видео! Все четко разложил по полочкам)

  • @mamyna_bysinka
    @mamyna_bysinka 3 года назад

    То что надо в субботу с утра!!!!

    • @MobileDeveloper
      @MobileDeveloper  3 года назад

      Утро начинается не с кофе

  • @_MrKekovich
    @_MrKekovich Месяц назад

    Чистое ФП - это неудобно, потому что ты почти всегда просто копируешь с новыми параметрами. Сейчас популярные языки имеют state и я думаю, что это хорошо

  • @sergeyvoloshin1553
    @sergeyvoloshin1553 3 года назад +4

    из видео запомнил что лупа получил за пипу, а пипа за лупу

    • @MobileDeveloper
      @MobileDeveloper  3 года назад +2

      Это прискорбно, пересмотрите ещё раз, может что-нибудь ещё запомнится)

  • @artemkhateev3650
    @artemkhateev3650 3 года назад

    Огонь видео, спасибо)

  • @tera393
    @tera393 2 года назад

    Супер, круто, спасибо

  • @user-oc7py1vy6s
    @user-oc7py1vy6s 3 года назад +3

    Поумничаю в комментариях...
    При вызове inline функций из java классов инлайнинг убирается и лямбды, преобразуются в классы.
    Inline функции с овеществленным параметром нельзя вызывать из java классов.
    Inline классы имеют баги и могут быть причиной ошибок во время исполнения. Не просто так они сейчас в экспериментальном статусе.

  • @rustamibrahimli2113
    @rustamibrahimli2113 3 года назад +4

    Сделай пожалуйста видосы про Room

    • @kafychannel
      @kafychannel 3 года назад +1

      Если хочешь, могу помочь разобраться, там ничего сложного, не бесплатно конечно же ну много не возьму

    • @rustamibrahimli2113
      @rustamibrahimli2113 3 года назад +1

      @@kafychannel мне не нужно, я для всех говорил

    • @MobileDeveloper
      @MobileDeveloper  3 года назад +1

      Сделаю обязательно

    • @rustamibrahimli2113
      @rustamibrahimli2113 3 года назад

      @@MobileDeveloper Спасибо тебе большое!!

  • @user-de6dd1dd8e
    @user-de6dd1dd8e 3 года назад

    То что нужно!

  • @alexandernifanin7366
    @alexandernifanin7366 3 года назад +1

    Использую inline не для скорости, как в Паскале и Си, а для такого.
    1. Reified.
    2. Helper-класс с корутинами. Внутри его методов могут быть эксепшены. Они летят в try-catch, но ошибку показывают в крэш-логе внутри helper-класса. В итоге я никогда не нашёл бы источник ошибки. Поэтому делаю inline, crossinline у методов.

  • @d.mertsalov
    @d.mertsalov 3 года назад

    Спасибо!

  • @Steklopod
    @Steklopod 2 года назад

    Kotin is the best!

  • @ki16or
    @ki16or 3 года назад

    Крутое видео! Респект!
    Добавлю комментарий про crossinline.
    Тут неважно, производительно оно или нет. Вообще сам факт передачи лябды в другой контекст очень напоминает ту часть видео, где один человек засовывает другому человеку в отверстия неорганичные предметы различных габаритов. Если смотрящий без отклонений - то смотреть неприятно.
    Проблема в том, что если все же передать лямбду в другой контекст, то return без лейбла уже сработает не так, как ожидается. И crossinline просто говорит компилятору (и синтаксическому анализатору), что в crossinline лямбде уже не работает разрешение просто использовать return, обязательно нужен будет лейбл. Или тег? Чот запамятовал(
    По факту, это всего лишь не дает пишущему лябмду застрелиться, показывая, что функция уходит в другой контекст, ну и сигнализируя среде разработке, чтобы там подчеркивалось с ошибкой return без лейбла. Соответственно, компилятор тоже не скопилит такую дичь с return без лейбла)

    • @MobileDeveloper
      @MobileDeveloper  3 года назад

      Спасибо, очень крутое замечание!

  • @sadyknasrullaev9951
    @sadyknasrullaev9951 3 года назад

    Спасибо за видео!
    Подскажи пожалуйста, Как ты достаёшь код декомпилированный из котлина в джаву?

    • @A-pe5yy
      @A-pe5yy 3 года назад +1

      Tools > Kotlin > Show Kotlin Bytecode и затем Decompile.

    • @sadyknasrullaev9951
      @sadyknasrullaev9951 3 года назад +1

      @@A-pe5yy Спасибо!

  • @ivanchepelkin6347
    @ivanchepelkin6347 3 года назад

    Хмм..задумался. Я делаю адаптер для ресайклер вью и прям через конструктор адаптера передаю функцию моего презентера/viemodel. Это функция вызывается на холдере после клика на этот холдер. Получается, если у меня будет 1000 эл-ов в списке , значит создатся 1000 анонимных классов и память пойдет вверх?

    • @MobileDeveloper
      @MobileDeveloper  3 года назад

      Не думаю, что это так произойдет, но надо померять.

    • @kafychannel
      @kafychannel 3 года назад

      Привет,если ты передаешь анонимный класс (интерфейс) в конструктор,а потом юзаешь эту ссылку при тапе на ту же кнопку,то создается 1 анонимный класс (при передачи его в конструктор адаптера)

  • @kirillsushilnikov9614
    @kirillsushilnikov9614 2 года назад

    ничего не понял, но очень интересно)

  • @wtf_nick
    @wtf_nick 3 года назад +1

    Краткий конспект с такими же примерами kotlinlang.ru/docs/reference/inline-functions.html )

  • @paulsoja2732
    @paulsoja2732 3 года назад

    только у меня на 6:35 качество видео падает?

    • @paulsoja2732
      @paulsoja2732 3 года назад

      да, только у меня))) Скорость инета упала.

    • @MobileDeveloper
      @MobileDeveloper  3 года назад +1

      Качество всегда огонь 😂

  • @user-br4gt7xu2j
    @user-br4gt7xu2j 7 месяцев назад

    Ох уж эти мобильные разработчики))
    1. В Математике нет никаких "функций высшего порядка", это программисты придумали, а в Математике это называется оператором ))
    2. Такой бред как на 8:56 в Java нельзя сделать, не надо пороть чепуху.
    Просто ты пытаешься тут декомпилировать байт-код Котлин в Java вместо того, чтобы использовать Kotlin bytecode inspector, а kotlinc компилирует по иным шаблонам, нежели javac, поэтому декомпитятор тебе билиберду рисует.
    Если откроешь байткод и посмотришь, то там нет никакого "нулл инстанса" и все значения устанавливаются адекватно обычному инстансу Function2 типа (и разумеется нет никаких "статических инстансов" по определению, статическими только переменные могут быть😂)

  • @evgenyfetskovich9617
    @evgenyfetskovich9617 3 года назад +1

    Опять эта сетка на весь экран. Невозможно смотреть.

    • @A-pe5yy
      @A-pe5yy 3 года назад

      Не смотри, никто не заставляет.

    • @awkwardquestion8643
      @awkwardquestion8643 3 года назад

      @@A-pe5yy буду!🤦