Swift "where" Array-Erweiterungen

b Swift 2.0 scheinen wir Erweiterungen generischer Typen näher zu kommen, die auf prädizierte Situationen anwendbar sin

Obwohl wir das immer noch nicht können:

protocol Idable {
    var id : String { get }
}

extension Array where T : Idable {
    ...
}

... das können wir jetzt machen:

extension Array {
    func filterWithId<T where T : Idable>(id : String) -> [T] {
    ...
    }
}

... und Swift akzeptiert es grammatikalisch. Für mein Leben kann ich jedoch nicht herausfinden, wie ich den Compiler glücklich machen kann, wenn ich den Inhalt der Beispielfunktion ausfülle. Angenommen, ich würde so deutlich wie möglich sein:

extension Array {
    func filterWithId<T where T : Idable>(id : String) -> [T] {
        return self.filter { (item : T) -> Bool in
            return item.id == id
        }
    }
}

... der Compiler akzeptiert die zum Filtern bereitgestellte Schließung nicht und beschwert sich

Kann nicht 'filter' mit einer Argumentliste vom Typ '((T) -> Bool)' aufrufen

Ähnlich, wenn item als Idable angegeben ist. Hat hier jemand Glück gehabt?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage