Ich bin ein Programmierer Anfänger, bitte entschuldigen Sie die naive Frage. Swift ist meine erste Sprache und ich habe keine Referenz (andere Programmiersprachen), um die Vorteile des Typs Constrains bei der Protokollerweiterung zu vergleichen.Welche Vorteile haben Typbeschränkungen in Protokollerweiterungen?
Persönlich fühle ich mich einfach verwirrt und komisch. Warum gibt es die Typbeschränkung für eine Protokollerweiterung? Was bedeutet das?
protocol TeamRecord {
var wins: Int { get }
var losses: Int { get }
func winningPercentage() -> Double
}
//Constraint:
extension CustomStringConvertible where Self: TeamRecord {
var description: String {
return "\(wins) - \(losses)"
}
}
struct BaseballRecord: TeamRecord {
var wins: Int
var losses: Int
func winningPercentage() -> Double {
return Double(wins)/Double(wins) + Double(losses)
}
}
extension BaseballRecord: CustomStringConvertible { }
print(BaseballRecord(wins: 4, losses: 2))
Frage ich seltsam fühlen hier die where Self
Einschränkung zu verwenden, was die Vorteile davon? Können wir das gleiche Ergebnis erzielen, ohne das Constraint-Personal zu verwenden?
Vielen Dank für Ihre Zeit so viel und
hmm! Die Einschränkung ist sehr nützlich. Danke für deine Erklärung und dein Beispiel – SLN