Swift. Ключевые слова any и some. Экзистенциальный контейнер.

Поделиться
HTML-код
  • Опубликовано: 20 окт 2024
  • Как работают ключевые слова any и some. Что такое экзистенциальный контейнер.

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

  • @damencki
    @damencki 7 месяцев назад

    Большое спасибо за видео. Очень понятно и без воды!

  • @АнатолийЛушников-ф6ь
    @АнатолийЛушников-ф6ь 8 месяцев назад

    Николай, большое спасибо вам за урок. Очень доходчиво объясняете.

    • @nikolai.developer
      @nikolai.developer  8 месяцев назад

      Пожалуйста, рад, что вам понравилось.

  • @КонстантинИсаченко-е3б

    Спасибо за урок! Я бы с удовольствием посмотрел и послушал Ваше объяснение диспетчеризации.

    • @nikolai.developer
      @nikolai.developer  Год назад +1

      Спасибо, на будущей неделе запишем.

  • @pickleteach1920
    @pickleteach1920 Год назад +3

    Удивительно, что youtube только сейчас предложил Ваш канал
    Большое спасибо за Ваши видео!

  • @InSideCannel
    @InSideCannel 2 месяца назад

    Очень понятно построенно объяснение! Спасибо

  • @AA-ld2ix
    @AA-ld2ix Год назад +3

    Спасибо, очень рад что наткнулся на ваш канал)

  • @romildathetortoise
    @romildathetortoise Год назад +1

    Спасибо. Хорошее объяснение на достаточно глубоком уровне. Таких видео очень не хватает. Все обычно объясняют не сильно глубже документации свифта. Есть много тем, которые было бы здорово раскрыть на таком же уровне - дженерики, память, экзистенциальность, рендеринг, xcode instruments, ... Еще раз спасибо.

    • @nikolai.developer
      @nikolai.developer  Год назад +1

      Спасибо вам за отзыв.
      Темы и видео будут появляться. Будем освещать.

    • @barret3575
      @barret3575 2 месяца назад

      @@nikolai.developer а почему мой коммент удалили

  • @Stricken174
    @Stricken174 8 месяцев назад

    Прод очень консервативен в таких вещах) Спасибо за объяснение!

  • @РенатГалямов-о4т
    @РенатГалямов-о4т 8 месяцев назад

    Спасибо, все понятно!

  • @Денис-ж3ф5р
    @Денис-ж3ф5р 8 месяцев назад

    Круто

  • @maximpanteleev5413
    @maximpanteleev5413 2 месяца назад

    Привет, что ты имеешь в виду на 17:35 примерно "размер массива будет равен количеству элементов одинаковому"?
    Размер массива всегда один и тот же, он не зависит от количества элементов)

    • @nikolai.developer
      @nikolai.developer  2 месяца назад

      Ну изначально да, все массивы одинакового размера. Но, когда мы все-таки дойдем до предела и нам нужно вставить новый элемент. То массив увеличивается в два раза (берется новый блок памяти туда копируется старое содержимое и добавляется новый элемент).
      Здесь я имел в виду фактический размер всех элементов, которые в массиве есть и механизм, который позволяет сохранять возможность обращения к этим элементам массива по индексу. Хотя, мы не знаем какого они размера (так как там просто протоколы указаны).

    • @maximpanteleev5413
      @maximpanteleev5413 2 месяца назад

      @@nikolai.developer ок, понял.
      зы. я про то, что если смотреть размер массива через memorylayout там всегда 8 будет, тк в нем ссылка на буфер лежит и больше ничего

    • @maximpanteleev5413
      @maximpanteleev5413 2 месяца назад

      @@nikolai.developer ок, понял
      зы. я про то, если смотреть через memorylayout, то всегда будет размер один и тот же, т.к. в массиве только ссылка на буфер лежит

  • @vitaliyhalai6017
    @vitaliyhalai6017 11 месяцев назад

    Супер

  • @shurale85
    @shurale85 11 месяцев назад

    Намудрили с протоколами в свифте. В c# куда проще с ними и угловые дженерики сразу поддерживаются. Сложно понять почему если два разных объекта, реализующих один и тот же протокол не могут быть возвращены в рамках одного метода, тип возврата которого и есть этот протокол.

    • @nikolai.developer
      @nikolai.developer  11 месяцев назад

      Если я правильно вас понял, то могут быть возвращены. Но нужно указать any ProtocolName. Как возвращаемый тип.
      Согласен, что система сходу не простая. Если сложно запомнить или разобраться на первых порах можно просто к имени протокола добавлять ключевое слово any.
      Но, все это призвано, чтобы сэкономить память и время вызова уменьшить.

  • @DenisBrilliantov
    @DenisBrilliantov 7 месяцев назад

    Там про existential container ты не правильно рассказал там хранятся pvwt(pointer to value witness table) pwt (pointer to Protocol Witness Table) а у теббы там virtual table хотя он для классов а не протоколов

    • @nikolai.developer
      @nikolai.developer  7 месяцев назад +1

      Спасибо за замечание. Все верно.
      Основной момент, который хотелось рассмотреть - это разница any, some и в массиве "умещаются" объекты, которые могут быть разных размеров.
      Про таблицы говорилось для того, чтобы было понятие, что они там есть. В виде ссылок или самих значений не так принципиально. А про то то, что там VT - это да, ошибся когда составлял слайд.

    • @Денис-ж3ф5р
      @Денис-ж3ф5р 7 месяцев назад +1

      Да я понимаю что это не фокус был) видео то хорошое. Редко такой контент найдешь где