Поскольку параметр должен иметь тип, соответствующий EnemyMovement
, включая эти методы, вы должны передать этот объект.Итак, вы можете попытаться создать пример struct
struct Movements: EnemyMovement {
func forward(speedPercent: Int) {
print(speedPercent)
}
func reverse(speedPercent: Int) {
print(speedPercent)
}
func left(speedPercent: Int) {
print(speedPercent)
}
func right(speedPercent: Int) {
print(speedPercent)
}
}
сейчас как параметр для EnemyInstance
инициализатор передать новый экземпляр Movements
var enemy = EnemyInstance(name: "zombie", enemyMovement: Movements())
, затем вы можете вызвать какой-нибудь метод на enemyMovement
свойство вашего класса и код внутри этого определенного метода выполняется (в этом случае он должен вывести speedPercent
)
required init (name: String, enemyMovement: EnemyMovement) {
self.name = name
self.enemyMovement = enemyMovement
enemyMovement.forward(speedPercent: 2) // prints 2
}