Swfit associatedtype编译错误

时间:2016-05-01 14:35:10

标签: swift compiler-errors associated-types

我正在阅读Apple发布的Swift书。我有XCode 7.2.1 下面的代码给出了编译错误。我在操场上使用了这段代码。

protocol Container {
    associatedtype ItemType
    mutating func append(item: ItemType)
    var count: Int { get }
    subscript(i: Int) -> ItemType { get }
}

您可以在页面的后半部分看到代码here

这是错误: enter image description here

我不确定这是否是对代码的正确更改;但是当我从

中更改协议中的第一行时
associatedtype ItemType

typealias ItemType

错误消失了。

2 个答案:

答案 0 :(得分:1)

Xcode 7.2.1仍然在Swift 2.1上。

使用Xcode 7.3,当前版本的Xcode,Xcode开始使用Swift 2.2版。

在Swift版本2.1和2.2之间,协议中typealias的使用已更改为新的associatedType关键字。

所以说到这一点,你在Apple发布的Swift书中看到的文档已经更新为Swift 2.2语法,但你使用的是尚未更新为Swift 2.2语法的Xcode版本爱好。

因此,正如您所知,通过在协议中使用typealias代替associatedType,它将在Xcode 7.2.1中正确编译。

但是应该建议如果可能的话,继续升级到Xcode 7.3并使用Swift 2.2。如果你这样做,Apple的Swift书中更新的Swift 2.2示例将在你的Xcode中完美地运行。

答案 1 :(得分:-1)