Рассмотрим следующий код:
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
. Это все прекрасно, но моя реализация в реальной жизни немного глубже в некоторых других классах, и всегда нужно указывать весь список утомительно.
Почему компилятор может точно определить тип статической переменной, но как только вы делаете что-то более сложное, вы должны явно указать тип?
Есть лиспособ убедиться, что компилятор знает тип в этом контексте, когда я хочу получить доступ к переменной экземпляра из предполагаемой статической переменной?