185 похожих чатов

Всем привет,на одном собесе задали такое, может кто-нибудь объяснить почему

именно в таком порядке выводится?

Наверное это связано с диспетчеризацией методов, но ведь самая быстрая - это статическая, а она есть у расширений, поэтому мне казалось,что первым должно быть "protocol foo"?

14 ответов

95 просмотров

Приоритет у класса будет

на какой уровень собесы проходишь?

Таня- Автор вопроса
khollsichek
Приоритет у класса будет

а почему вторым вывелся protocol bar,а не protocol foo?

Таня- Автор вопроса
Jeivi
на какой уровень собесы проходишь?

в том собесе не было заявлено уровня

Таня
а почему вторым вывелся protocol bar,а не protocol...

А почему protocol foo должно вывестись?

Таня- Автор вопроса
khollsichek
А почему protocol foo должно вывестись?

ну вроде как код исполняется сверху вниз?

Доброе утро! Не претендую на правильность ответа, но интересно стало В документации вот что нашел : Расширения протоколов могут добавлять реализацию к соответствующим типам данных, но не могут расширить протокол или унаследовать от другого протокола. Наследование протокола всегда указывается в самом объявлении протокола.

Это вопрос из серии, знаете ли вы подводные камни свифта. Если в протоколе не определена функция, но в расширении она есть (функция bar), то всегда будет вызвана именно эта реализация, даже если классы будут писать свою.

Таня- Автор вопроса
Vadim Shishkov
Это вопрос из серии, знаете ли вы подводные камни ...

да, я поняла, супер, спасибо что помогаете !

а тут проиходит следущие у константы указан тип протокол, компилятор смотрит на этот протокол идет в него видит метод, дальше идет в класс который реализует этот протокол видит там этот метод и реализует его, поэтому печает class foo

про это спрашивали ? почему так ? Я убрал только указание типа у констаны sample

Artur Dokhno
про это спрашивали ? почему так ? Я убрал только у...

тут компилятор сам определяет тип sample и определяет его как тип SampleClass а не SampleProtocol и идет в клаласс и реализует его метод bar, а не идет в протокол и ищет там метод bar, не находит его но видит расширение протокола и идет туда

Artur Dokhno
про это спрашивали ? почему так ? Я убрал только у...

вот как я тут убрал тип и вывело то что ты ожил бы =)

Добрый день, давайте попытаюсь поэтапно вам это объяснить 1) Вы объявили протокол в котором объявлена только функция foo но не объявлена функция bar 2) когда делаете расширение протокола то это означает если функция объявлена в протоколе и нет у неё body то это означает то что находиться в расширении это defoult значение которое сработает при вызове 3)Создаёться класс и наследуеться в вашего протокола и вы прописываете body от функции foo тем самым у вас не сработает defoult значение которое прописано у вас в расширении и в силу того что у вас в протоколе не объявлена функция bar то он заберёт ваше defoult значение которое у вас прописано в расширении следовательно у вас выйдет class foo которое вы переназначили и protocol bar которого у вас нет в протоколе и есть в расширении которое по сути как писал выше будет defoult значение

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта