Swift 5, на XCode 11.2.1. Я запрограммировал в Java навсегда, и на данный момент я обладаю лишь умеренными навыками в Swift, поэтому некоторые мои знания окрашены Java идиомами.
Предположим, мы предоставляем протокол или, возможно, псевдо - абстрактный класс, который можно реализовать в отдельном модуле. Затем программист передает ссылку на свой класс обратно к коду в первом модуле, который создает экземпляр своего класса. Теперь в Java это было трудно, потому что вы не могли дать никаких гарантий, какие методы инициализаторов / stati c определит подкласс. Однако в Swift вы можете. Это аккуратно. За исключением того, что я еще не нашел способ их использования. Что бы я ожидал , так это то, что у вас мог бы быть такой код, например
protocol FooP {
init(s: String)
}
func instantiate(clazz: FooP.Type) -> FooP {
return clazz.init(s: "qwerty")
}
... OOOOORRRR, который на самом деле работает, именно так, как я надеялся. Я думаю, что в моих тестах я просто не смог найти правильную комбинацию CLASS / .Type / .self, чтобы подсказать мне возможность успеха.
Поскольку я не нашел никакой другой информации об этой возможности, несмотря на поиск в течение 30-60 минут, я отвечу на свой вопрос.