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

Поділитися
Вставка
  • Опубліковано 2 жов 2024

КОМЕНТАРІ • 64

  • @MobileDeveloper
    @MobileDeveloper  3 роки тому +12

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

  • @MikolaDelopata
    @MikolaDelopata Рік тому

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

  • @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 снимать! Однозначно снимать 🖖

  • @АртурПетров-н3у
    @АртурПетров-н3у 3 роки тому +6

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

  • @_MrKekovich
    @_MrKekovich 2 місяці тому

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

  • @AlexSmile-y2x
    @AlexSmile-y2x 8 місяців тому

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

  • @rustamibrahimli2113
    @rustamibrahimli2113 3 роки тому +4

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

    • @kafychannel
      @kafychannel 3 роки тому +1

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

    • @rustamibrahimli2113
      @rustamibrahimli2113 3 роки тому +1

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

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +1

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

    • @rustamibrahimli2113
      @rustamibrahimli2113 3 роки тому

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

  • @sergeyvoloshin1553
    @sergeyvoloshin1553 3 роки тому +4

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

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +2

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

  • @СергейПанов-з3ц
    @СергейПанов-з3ц 3 роки тому +3

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

  • @poloplopol9791
    @poloplopol9791 10 місяців тому +1

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

  • @mironoff2007
    @mironoff2007 2 роки тому +1

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

  • @wtf_nick
    @wtf_nick 3 роки тому +1

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

  • @xlit97
    @xlit97 3 роки тому +2

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

  • @alexandernifanin7366
    @alexandernifanin7366 3 роки тому +1

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

  • @dmytromarchuk3023
    @dmytromarchuk3023 3 роки тому +1

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

  • @evgenyfetskovich9617
    @evgenyfetskovich9617 3 роки тому +1

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

    • @A-pe5yy
      @A-pe5yy 3 роки тому

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

    • @awkwardquestion8643
      @awkwardquestion8643 3 роки тому

      @@A-pe5yy буду!🤦

  • @Chron4ik
    @Chron4ik 3 роки тому

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

  • @borisphen2001
    @borisphen2001 Рік тому

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

  • @ki16or
    @ki16or 3 роки тому

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

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

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

  • @kirillsushilnikov9614
    @kirillsushilnikov9614 2 роки тому

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

  • @tera393
    @tera393 2 роки тому

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

  • @ivanchepelkin6347
    @ivanchepelkin6347 3 роки тому

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

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

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

    • @kafychannel
      @kafychannel 3 роки тому

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

  • @ЮрійБережний-с7ъ
    @ЮрійБережний-с7ъ 3 роки тому

    То что нужно!

  • @Steklopod
    @Steklopod 2 роки тому

    Kotin is the best!

  • @sadyknasrullaev9951
    @sadyknasrullaev9951 3 роки тому

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

    • @A-pe5yy
      @A-pe5yy 3 роки тому +1

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

    • @sadyknasrullaev9951
      @sadyknasrullaev9951 3 роки тому +1

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

  • @artemkhateev3650
    @artemkhateev3650 3 роки тому

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

  • @paulsoja2732
    @paulsoja2732 3 роки тому

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

    • @paulsoja2732
      @paulsoja2732 3 роки тому

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

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +1

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

  • @mamyna_bysinka
    @mamyna_bysinka 3 роки тому

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

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

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

  • @d.mertsalov
    @d.mertsalov 3 роки тому

    Спасибо!