我是编程初学者,请原谅这个天真的问题。 Swift是我的第一语言,我没有参考(其他编程语言)来比较类型Constrains对协议扩展的好处。协议扩展中类型约束的好处是什么?
个人而言,我只是感到困惑和奇怪。为什么对协议扩展的类型约束存在?它的含义是什么?
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))
问题我觉得好奇怪在这里使用的where Self
约束,什么是它的好处?我们能否在不使用约束人员的情况下达到相同的结果?
非常感谢您的时间和帮助
嗯!该约束非常有用。谢谢你的解释和例子 – SLN