Как я могу вернуть универсальный Swift c из общего расширения? - PullRequest
0 голосов
/ 23 февраля 2020

Если бы у меня был обобщенный класс c, подобный этому:

class Generic<T: Any> {
    var object: T
    init(object: T) {
        self.object = object
    }
}

Я мог бы получить доступ к объекту из инициализатора следующим образом:

Generic(object: "Hello World").object.count // 11

Как этот универсальный c класс работает для Any типа, как бы я расширил все типы для возврата объекта этого родового c класса?

Я имею в виду что-то вроде этого:

extension Any {
    var generic: Generic<Self> {
        Generic(object: self)
    }
}

Так что я могу Звоните:

"Hello World".generic.object.count // 11

Я запутался со всеми Any, AnyObject, Self, self, Type и т. д.

ОБНОВЛЕНИЕ:

Например, как мне расширить все Comparable с вычисленными свойствами array: Array<Comparable>? Я думаю о чем-то вроде:

extension Comparable {
    var array: Array<Comparable> {
        Array(self)
    }
}

1 Ответ

0 голосов
/ 23 февраля 2020

Вы не можете расширять Any, см. { ссылка }

Пример для сопоставимого расширения:

extension Comparable {
    var array: Array<Self> {
        [self]
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...