Капец, впору писать статью про эти дженерики, потому как, по справедливости, тема сложная, вникнуть непросто
Да не такая уж тяжелая тема на самом деле если применение понять. 🤷♂️
Всего ничего — понять тему )
Ну вот пример https://developer.apple.com/documentation/swiftui/viewbuilder Для SwiftUI можно построить вью из совсем разных вещей—Text, Button и т.д. Для компилятора это все просто разные типы. Чтоб поддержать такую возможность заимплементили 10 вариантов buildBlock, начиная с C0 и заканчивая C0...C9. 10 это предел для SwiftUI (тут не знаю почему), поэтому когда в VStack больше 10 вьюх—компилятор ругается. Если хочешь 11—нужно новый buildBlock до С10 и т.д. Раньше просто не было других вариантов. Сейчас это все можно 1. упростить и 2. улучшить с помощью parameter packs. Будет просто один buildBlock и бесконечное число вьюх (типов), что то в виде: func buildBlock<each C>(_ c: repeat each C) -> TupleView<each C> ну или что-то типа такого, сам еще не игрался с этим. 🤔
Обсуждают сегодня