最佳答案
我对用于协议关联类型的语法与用于泛型类型的语法之间的区别感到困惑。
例如,在 Swift 中,可以使用类似于
struct Stack<T> {
var items = [T]()
mutating func push(item: T) {
items.append(item)
}
mutating func pop() -> T {
return items.removeLast()
}
}
而使用类似于
protocol Container {
associatedtype T
mutating func append(item: T)
var count: Int { get }
subscript(i: Int) -> T { get }
}
为什么后者不仅仅是:
protocol Container<T> {
mutating func append(item: T)
var count: Int { get }
subscript(i: Int) -> T { get }
}
这种语言没有采用后一种语法,是否有某种深层次的(或者只是显而易见的,我没有意识到)原因?