Я пытаюсь сделать следующее.Кастинг struct с общим параметром с быстрым
protocol Vehicle {
}
class Car : Vehicle {
}
class VehicleContainer<V: Vehicle> {
}
let carContainer = VehicleContainer<Car>()
let vehicleContainer = carContainer as VehicleContainer<Vehicle>
Но я получаю ошибку компиляции на последней строке:
'Car' is not identical to 'Vehicle'
Есть ли обходной путь для этого?
Также я считаю, что этот тип каста должен быть возможен, потому что я могу сделать это с помощью массивов, которые основаны на дженериках. Следующие работы:
let carArray = Array<Car>()
let vehicleArray = carArray as Array<Vehicle>
Не уверен, если это не имеет ничего общего с ним, но 'Array' является типом значения. Попытайтесь переформулировать свою иерархию выше в терминах 'struct' и посмотреть, все ли вы по-прежнему получаете ту же ошибку. – martineno
Да, я пробовал это уже с VehicleContainer как Struct, и он дает ту же ошибку – hoddez
Вы когда-нибудь это понимали? – joslinm