Swift: self в инициализаторе имеет тип (T) -> () -> T - PullRequest
2 голосов
/ 27 мая 2020

TL; DR :

Как переменная NSObject s self получает тип (T) -> () -> T?

Примечания

Я понимаю почему использование self таким способом незаконно. Но я пытаюсь разобраться во втором сообщении об ошибке.

Код

struct DummyStorer {
    let dummy: Dummy
}

struct Dummy {
    let storer = DummyStorer(dummy: self)
    // Use of unresolved identifier 'self'
    // OK, that's reasonable. But...
}

class Dummy : NSObject {
    let storer = DummyStorer(dummy: self)
    // Cannot convert value of type '(Dummy) -> () -> Dummy' to expected argument type 'Dummy'
    // ... how does the compiler arrive at this?
}

1 Ответ

2 голосов
/ 27 мая 2020

Это часть NSObjectProtocol

public protocol NSObjectProtocol {


    func isEqual(_ object: Any?) -> Bool

    var hash: Int { get }


    var superclass: AnyClass? { get }


    func `self`() -> Self         // << here !!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...