Sto cercando di fare il seguente codice che trasforma una serie di tuple in un dizionario, ma sto ricevendo un errore di compilazione dicendo:Errore: il valore Immutabile trasmesso ridurre la funzione
Immutable value of type '[String : String]' only has mutating members named 'updateValue'
var array = [("key0", "value0"), ("key1", "value1")]
var initial = [String: String]()
var final = array.reduce(initial) { (dictionary, tuple) in
dictionary.updateValue(tuple.0, forKey: tuple.1)
return dictionary
}
Perché è che se iniziale è stato dichiarato come var? Ha a che fare con @noescape su firma di riduzione?
func reduce<U>(initial: U, combine: @noescape (U, T) -> U) -> U
Grazie mille! L'avvertenza è che non posso usare $ 0 se voglio cambiare la mutabilità su quegli scenari, giusto? –
Immagino di sì ... Non sono a conoscenza di alcun metodo per renderlo un var (che non significa necessariamente che non sia possibile) – Antonio
@RaphaelOliveira: Parte di [questa risposta] (http://stackoverflow.com/a/24219069/1187415) è un metodo di dizionario Dictionary che accetta una serie di tuple chiave/valore (e che utilizza anche un semplice ciclo). –