Por que precisamos de um genérico aqui? O protocolo não é suficiente?
Encontrei o exemplo a seguir na Web sobre o uso de genéricos junto com protocolos, mas não entendo por que precisamos de genéricos, quando tudo o que precisamos é usar um protocolo.
Nós definimos um protocolo:
protocol Healthy {
mutating func setAlive(status: Bool)
var health: Int { get }
}
E então uma função usando um genérico adotando esse protocolo
func check<T:Healthy>(inout object: T) {
if (object.health <= 0) {
object.setAlive(false)
}
}
Alterei o código como abaixo e ainda está tudo bem.
func check( object: inout Healthy) {
if (object.health <= 0) {
object.setAlive(status: false)
}
}
Ou não?
A única razão pela qual eu pensei em usar um genérico lá, se é um protocolo que tem um tipo associado e não pode ser usado como uma instância.