J'ai une classe StateMachine<A>
Comment utiliser des protocoles Swift avec des méthodes génériques et types génériques
final class StateMachine<A> {
private var previousState: State? = nil
private var currentState: State
private var content: A?
var delegate: StateMachineDelegate?
var state: State = .loading {
didSet {
previousState = currentState
currentState = state
}
}
init(currentState: State, delegate: StateMachineDelegate?) {
self.currentState = currentState
}
}
et un protocole de délégué StateMachineDelegate
protocol StateMachineDelegate {
func updateWith(content: A)
}
J'essaie d'exprimer que si le StateMachine est créé avec le type A, le délégué doit implémenter la méthode func updateWith(content: A)
qui accepte un paramètre du même type A. Est-ce possible?
Votre code a beaucoup de problèmes maintenant: vous ne pouvez pas mettre des types imbriqués dans les génériques ('ENUM State'); vous devez initialiser toutes les propriétés non-optionnelles dans votre 'init'; vous devez spécifier 'associatedtype' dans votre protocole de délégué. – user28434