У меня есть класс StateMachine<A>
Как использовать Swift протоколы с Generic методы и общие типы
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
}
}
и протокол делегата StateMachineDelegate
protocol StateMachineDelegate {
func updateWith(content: A)
}
Я пытаюсь выразить, что если создается StateMachine с типом A, делегат должен реализовать метод func updateWith(content: A)
, который принимает параметр того же типа A. Возможно ли это?
Вашего кода имеет много проблем в настоящее время вы не можете поместить вложенные типов в дженерик ('перечислимой State'); вы должны инициализировать все необязательные свойства в 'init'; вы должны указать 'associatedtype' в своем делетете-протоколе. – user28434