То, что вы хотите сделать, невозможно. Поскольку conforms<T>(_:to:)
- это generi c, тип параметра generi c должен быть известен во время компиляции.
У вас есть несколько вариантов. Во-первых, вы можете определить новый метод, который проверяет тип на соответствие всем рассматриваемым протоколам:
func isIngestible(_ type: Any.Type) -> Bool {
return conforms(type, to: Drinkable.self)
|| conforms(type, to: Edible.self)
}
Или определить новый мастер-протокол, которому соответствуют ваши другие протоколы:
protocol Ingestible {}
protocol Drinkable: Ingestible {}
protocol Edible: Ingestible {}
struct Bread: Edible {}
struct Tire {}
print(conforms(Bread.self, to: Ingestible.self))
print(conforms(Tire.self, to: Ingestible.self))