Быстрый список протоколов и методов c Generi - PullRequest
0 голосов
/ 06 мая 2020

У меня есть структура, описывающая список представлений

struct A<T: View> {
   let view: T.Type
}

struct B<???> {
    let items: [A<???>]
}

И я хотел бы описать приложение следующим образом

let content = [
    B(items: [
         A(view: View1.self),
         A(view: View2.self)
    ])
]

Какой общий c тип B? Можно как-нибудь заставить его работать? То же самое было просто объявить view как View в Java.

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Бьюсь об заклад, вы не собираетесь просто использовать метатипы. Если да, то метатип встроен в тип. Его не нужно хранить:

struct A<View: SwiftUI.View> { }

struct B<View: SwiftUI.View> {
  let items: [A<View>]
}

struct View: SwiftUI.View {
  var body: some SwiftUI.View {
    Text("?⚔️")
  }
}

let content = [
  B<View>(items: [A(), A()])
]

В противном случае используйте ответ Франкенштейна. ⚡️

1 голос
/ 06 мая 2020

Вам просто нужно это:

struct A<T: View> {
   let view: T
}

struct B<T: View> {
    let items: [A<T>]
}
let content = [
    B(items: [
         A(view: View1),
         A(view: View2)
    ])
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...