2016-05-01 7 views
0

Appleが発行したSwiftの本を読んでいました。私はXCodeを持っている7.2.1 以下のコードは、コンパイルエラーを示しています。私は遊び場でこのコードを使用しました。Swfit関連タイプのコンパイルエラー

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

ページの後半にコードhereが表示されます。

ここでエラーです: enter image description here

これはコードに変更する権利である場合、私はわかりません。私は

typealias ItemType 

associatedtype ItemType 

からプロトコルで1行目を変更するときには、エラーが表示されなくなります。

+1

"エラーは消えます"しかし、Xcode 7.3にアップグレードする方がよいでしょう。それはSwift 2.2を持っていて、Swift 3はすぐそばにあります。あなたは後ろにいて、近代的なコードを扱うのがますます難しくなります(そしてSwift 3が来ると、あなたは完全に神秘的になります)。 – matt

答えて

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のバージョンを使用しています。

正しく学習したように、プロトコルでassociatedTypeの代わりにtypealiasを使用すると、Xcode 7.2.1で正しくコンパイルされます。

可能であれば、Xcode 7.3にアップグレードし、Swift 2.2を使用することをお勧めします。これを行うと、AppleのSwiftの本のSwift 2.2の例は、あなたのXcodeで完全に正常に動作します。

関連する問題