#swift #swiftui
#swift #swiftui
Вопрос:
UIViewRepresentable
имеет…
associatedtype Coordinator = Void
В одном случае у меня есть…
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
class Coordinator: NSObject, MKMapViewDelegate {
...
}
Если я добавлю…
typealias Coordinator = Self.Coordinator
компилятор говорит…
Недопустимое повторное объявление «Координатора»
… ссылка на вложенный класс.
Итак, что Coordinator = Void
означает и почему определение вложенного класса определяет связанный тип? Выводит ли он это из возвращаемого типа makeCoordinator
? Почему это не позволяет мне дополнительно явно указывать его с помощью typealias Coordinator = Self.Coordinator
?
Ответ №1:
Итак, что означает Coordinator = Void и почему при определении вложенного класса указывается связанный тип?
Coordinator = Void
означает, что координатор необязателен, и вы можете иметь представимый без координатора, т.Е. Void
это тип по умолчанию.
Выводит ли он это из возвращаемого типа makeCoordinator?
Да, это так.
Почему это не позволяет мне дополнительно явно указать его, используя typealias Coordinator = Self.Координатор?
Потому что typealias
вводится новый тип, но здесь вы хотите Coordinator = Coordinator
, поэтому компилятор сообщает о дублировании. Если вы хотите, вы можете представить его как
typealias OneMoreCoordinator = Self.Coordinator