2017-07-01 7 views
2

Xcode 9 Beta 2 Swift 4の演習を行っていましたが、この記事(https://www.uraimo.com/2016/01/06/10-Swift-One-Liners-To-Impress-Your-Friends/)項目Noを実行中にエラーが発生しました。 6:Swift 4:関連型配列のインスタンス化時に非関数型 '[Self.Element.Type]'の値を呼び出すことができません

extension Sequence{ 
    typealias Element = Self.Iterator.Element 

    func partitionBy(fu: (Element)->Bool)->([Element],[Element]){ 
     var first=[Element]() 
     var second=[Element]() 
     for el in self { 
      if fu(el) { 
      first.append(el) 
      }else{ 
      second.append(el) 
      } 
     } 
     return (first,second) 
    } 
} 

Xcodeの9次の行でエラーを投げた:

var first=[Element]() 
    var second=[Element]() 

完全なエラーは以下である:

error: Swift-Playground.playground:6:29: error: cannot call value of non-function type '[Self.Element.Type]' 
     var second=[Element]() 

エラー私はtypealiasを削除する場合であっても持続しフルSelf.Iterator.Elementタイプを使用してください。

このコードはSwift 3で完璧に機能します。Swift 4では機能しない理由はありません。関連する種類の処理に関してSwift 4の変更があれば誰かを助けてくれますか?代わりに配列をインスタンス化する。スウィフト4、protocol Sequence

答えて

3

まだあなたはそれをコンパイルするために

typealias Element = Self.Iterator.Element 

を削除することができます

associatedtype Element where Self.Element == Self.Iterator.Element 

を定義します。

関連する問題