Код: Выделить всё
import RealityKit
protocol RLActionImpl {}
struct RLAction {
let impl: Impl
}
struct RLAggregationActionImpl: RLActionImpl {
enum Aggregation {
case sequence
case group
}
let impls: [RLActionImpl]
let aggregation: Aggregation
func process(entity: Entity) {
impls.forEach { impl in
// ERROR
let action = RLAction(impl: impl)
entity.runAction(action)
}
}
}
extension Entity {
func runAction(_ action: RLAction) {
// some logic here
}
}
< /code>
он не работает с ошибкой: < /p>
Type 'any RLActionImpl' cannot conform to 'RLActionImpl'
Однако, если я просто перемещаю rlaction (IMPL: IMPL) в функцию Helper RunImpl , он работает:
Код: Выделить всё
extension Entity {
func runImpl(_ impl: some RLActionImpl) {
let action = RLAction(impl: impl)
runAction(action)
}
}
// ...
func process(entity: Entity) {
impls.forEach { impl in
entity.runImpl(impl)
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... -type-some