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

Помогите неучу... есть протокол protocol MyProtocol { } есть переменная var myProtocol: MyProtocol как инициализировать эту

переменную без создания нового класса, наследуемого от MyProtocol?

3 ответов

18 просмотров

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

Руслан Лутфуллин
Протоколы это экзистенциальный тип. То есть это ме...

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

Rearden
Если правильно понял из официальной документации, ...

https://developer.apple.com/videos/play/wwdc2022/110352/ https://developer.apple.com/videos/play/wwdc2022/110353

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта