2015-06-14 9 views
6

Nota: Questo vale anche per la Swift 3.0errore quando si utilizza ridurre() in Swift 2.0

Quando tento di usare la funzione reduce, ottengo un errore che dice:

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

ho già capito come farlo con la funzione enumerate() ma non riesco a risolvere questo problema. Ecco la riga di codice restituire l'errore:

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

risposta

15

di correggere questo stesso modo in cui si fissa il tuo problema con enumerate(). In Swift 2, la riduzione è stata rimossa come funzione globale ed è stata aggiunta come metodo di istanza a tutti gli oggetti conformi al protocollo SequenceType tramite un'estensione di protocollo. L'utilizzo è il seguente.

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

Grazie mille! Non ero sicuro a causa dei due valori all'interno di reduce(). –