2015-06-14 8 views
6

Hinweis: Dies gilt auch für Swift 3.0Fehler bei der Verringerung() verwendet in Swift 2.0

Wenn ich die reduce Funktion zu nutzen versuchen, erhalte ich eine Fehlermeldung, dass:

reduce is unavailable: call the 'reduce()' method on the sequence

ich schon herausgefunden, wie man das mit der enumerate() Funktion macht, aber ich kann nicht scheinen, dieses Problem zu lösen. Hier ist die Codezeile gibt den Fehler:

var hashValue: Int { 
    return reduce(blocks, 0) { $0.hashValue^$1.hashValue } 
} 

Antwort

15

Sie dieses Problem beheben die gleiche Weise, dass Sie Ihr Problem mit enumerate() fixiert. In Swift 2 wurde reduce als globale Funktion entfernt und als Instanzmethode für alle Objekte hinzugefügt, die dem Protokoll SequenceType über eine Protokollerweiterung entsprechen. Die Verwendung ist wie folgt.

var hashValue: Int { 
    return blocks.reduce(0) { $0.hashValue^$1.hashValue } 
} 
+0

Vielen Dank! Ich war mir wegen der zwei Werte innerhalb von reduce() nicht sicher. –