Ich kann das wirklich falsch haben. Anfänger. Ich habe das, was ich hier mache, in einer Spielplatzumgebung nachgebildet. Grundsätzlich ist der Absender ein Schieberegler innerhalb einer UITableView anderer Schieberegler. Die myData sind die zugrunde liegenden Daten. Ich möchte eine Berechnung für alle Elemente der zugrunde liegenden Daten durchführen, mit Ausnahme der, die dem Absender entspricht. Ich habe keine Ahnung, ob meine Closingsyntax korrekt ist. Dies ist das erste Mal, dass ich eines erstelle.Swift Filter und Map über Array von Strukturen
// sender comes over as a struct
struct myStruct {
var tag: Int = 0
var value: Float = 0
}
let sender = myStruct(tag: 1, value: 199)
// some vars for the calculation
let globalTotal: Float = 597
let globalAnotherTotal: Float = 0
// an array of data structs
struct myDataStruct {
var name: String = ""
var value: Float = 0
}
var myData: [myDataStruct] = []
myData.append(myDataStruct(name: "Tom", value: 45.0))
myData.append(myDataStruct(name: "Dick", value: 16.4))
myData.append(myDataStruct(name: "Harry", value: 12.3))
// a closure to do the calculation
var calcOtherVals: (Float, Float) -> (Float) = { (startVal, senderStartVal) in
let remainingStartVals = globalTotal - senderStartVal
let remainingNewVal = globalTotal - sender.value - globalAnotherTotal
let endVal = ((startVal * (100/remainingStartVals))/100) * remainingNewVal
return endVal
}
// now need to perform calcOtherVals on all the .value floats in myData EXCEPT the element at position sender.tag hopefully using filter and map
Also im Grunde versuche ich, Filter zu verwenden und Karte und die calcOtherVals Schließung der Array von Strukturen an Ort und Stelle zu bearbeiten. Das kann ich mit conditionals und loops und calcOtherVals als Funktion kein Problem machen. Ich hoffe nur, es eleganter zu machen.
FRAGE: Wie im Code-Kommentar, muss ich calcOtherVals
auf alle Werte .value in myData durchführen, mit Ausnahme des Elements an der Position sender.tag
. Wie?
Ich denke, dass ich es nicht richtig verstanden habe, Sie wollen 'myData' abbilden und filtern, um alle Daten basierend auf was zu bekommen? 'myDataStruct' hat keine' tag' Eigenschaft. Könntest du es ausarbeiten? –