In Swift, qualcuno può spiegare come sovrascrivere una proprietà su una superclasse con un altro oggetto subclassato dalla proprietà originale?
Prendi questo semplice esempio:
class Chassis {}
class RacingChassis : Chassis {}
class Car {
let chassis = Chassis()
}
class RaceCar: Car {
override let chassis = RacingChassis() //Error here
}
Questo dà l'errore:
Cannot override with a stored property 'chassis'
Se invece ho lo chassis come 'var', ottengo l'errore:
Cannot override mutable property 'chassis' of type 'Chassis' with covariant type 'RacingChassis'
L'unica cosa che ho trovato nella guida in "Sostituzione delle proprietà" indica che dobbiamo ignorare il getter e il setter, che potrebbero funzionare per cambiare il valore della proprietà (se è 'var'), ma per quanto riguarda la modifica della classe di proprietà ?
strong
proprietà e stavo ricevendo un errore nel tentativo di sovrascriverlo - ma sembra che mi sia perso che si traduce in un "opzione implicitamente non scartata" (chassis!
) in Veloce, quindioverride var chassis : Chassis!
risolve il problema.