Swift: ссылка на переменную экземпляра из статической переменной преобразуется в «Тип выражения неоднозначен без дополнительного контекста» - PullRequest
0 голосов
/ 06 ноября 2019

Рассмотрим следующий код:

struct MyStruct {
    static var main: MyStruct = MyStruct()
    static var alternative: MyStruct = MyStruct()

    var specific: MyStruct = MyStruct()
}

func someFunc(with myStruct: MyStruct) {}

Теперь, когда я вызываю someFunc(with: .main.specific), компилятор выдает:

Type of expression is ambiguous without more context

Однако, просто используя someFunc(with: .main) отлично работает.

Эту проблему легко решить, явно указав MyStruct.main.specific. Это все прекрасно, но моя реализация в реальной жизни немного глубже в некоторых других классах, и всегда нужно указывать весь список утомительно.

Почему компилятор может точно определить тип статической переменной, но как только вы делаете что-то более сложное, вы должны явно указать тип?

Есть лиспособ убедиться, что компилятор знает тип в этом контексте, когда я хочу получить доступ к переменной экземпляра из предполагаемой статической переменной?

...