2016-07-05 11 views
0

前に明らかに働いたチュートリアルからこのコードを使用した後、すぐに3を使って作業していませんが、なぜそれがわかりません。エラーが行に示しています!は(uniqueValues、Tとして値)エラー:余分な議論があります

extension Array { 

    func unique<T: Equatable>() -> [T] { 
     var uniqueValues = [T](); 

     for value in self { 
      if !contains(uniqueValues, value as T) { 
       uniqueValues.append(value as! T); 
      } 
     } 
     return uniqueValues; 
    } 

    func first<T>(test:(T) -> Bool) -> T? { 
     for value in self { 
      if test(value as! T) { 
       return value as? T; 
      } 
     } 
     return nil; 
    } 
} 
+2

あなたがから飛び降りていますSwift 1.2からSwift 3 ...これは大きな飛躍です。 :)多くの変更があります。[更新された言語ガイド](https://developer.apple.com/library/prerelease/content/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/)を読んでください。 uid/TP40014097-CH5-ID309)。 – Moritz

+0

「ユニークな」含意はO(N^2)です。http://stackoverflow.com/a/33553374/3141234 – Alexander

+0

もう1つここにあります:http://stackoverflow.com/questions/32159295/contains-in -xcode-7-beta-5。 –

答えて

1

が含まれている場合スウィフト2、contains(_:)Array上のインスタンスメソッドにリファクタリングされましたので:

if uniqueValues.contains(value as T) 
+0

Equatable要素のシーケンス(http://stackoverflow.com/a/25391725/1187415)のSequenceTypeのプロトコル拡張メソッドですか? –

+0

@MartinRああ、ありがとう、間違った機能をリンクしました! – Alexander

関連する問題