Есть одна большая вещь, которая смущает меня о типах представлений в SwiftUI :
Кажется, они не соответствуют протоколу View
, но каким-то образом они загадочным образом это делают.
Взять, к примеру, тип Text
. Это определяется следующим образом:
public struct Text : Equatable { ... }
Я не могу найти общедоступное расширение, которое добавляет соответствие протоколу View
, например
extension Text: View { ... }
и раздел Отношения в официальной документации просто гласят:
Соответствует: Приравнивается
Ничего больше, вот и все.
Тем не менее, я могу вернуть экземпляр Text
, где требуется некоторое View
, например:
var body: some View {
Text("I'm a View, I swear!")
}
Если Text
не соответствует View
, это будет невозможно, и выдается ошибка компилятора.
(some View
- непрозрачный тип результата , что означает, что это определенный тип с идентификатором, но соответствующий View
.)
Так как это возможно?
Где указано соответствие протокола View
для типов просмотра SwiftUI (например, Text
, Image
, Circle
, ...)?