Что это сделать в struct PageView ? - PullRequest
0 голосов
/ 06 мая 2020

Как Swift newb ie, я пытаюсь понять ...

  • Что происходит, когда <Page: View> (или что-либо, заключенное в < >) добавляется после структуры name?
  • Как называется этот синтаксис?
  • Это объяснено в документации Swift (где?) или, возможно, получено из C / C ++?

1 Ответ

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

Благодаря направлению, указанному @Asperi в комментариях, я думаю, что смогу ответить на свой вопрос.

Имя этой языковой конструкции - generics .

В первом примере ниже Page определяет generi c type , имя-заполнитель для типа. Параметр page может хранить значение любого допустимого типа Swift. Page может быть любым именем, которое имеет смысл для читаемости вашего кода.

struct PageView<Page> {
    var page: Page
}

Во втором примере ниже View - это ограничение типа и используется для ограничения возможные типы, назначаемые параметру page. В этом примере тип generi c Page должен соответствовать протоколу SwiftUI View . Все, что назначено для page, должно реализовывать все, что требуется протоколом просмотра.

struct PageView<Page: View> {
    var page: Page
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...